Files
AlquilaFacil/Modelo/RepositorioPermisos.cs
fede feb4db86c0 Fix: botones se salen de la pantalla
modified:   Entidades/Grupo.cs
	modified:   Front/src/lib/NavBarAutocompletable.svelte
	new file:   Front/src/lib/css/popup.css
	modified:   Modelo/RepositorioPermisos.cs
2024-11-24 13:01:06 -03:00

65 lines
2.2 KiB
C#

using System.Text.RegularExpressions;
using Entidades;
using Microsoft.EntityFrameworkCore;
namespace Modelo;
public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
public object? ListarPermisos(string email) {
var con = Context;
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
if (cli == null) return null;
var list = con.Clientes
.Where(c => c.Dni == cli.Dni)
.SelectMany(c => c.Idgrupos)
.Include(x=> x.Idpermisos);
return list;
}
public bool CheckPermisos(string token, int idpermiso){
var con = Context;
bool tienePermiso = false;
//checkeo que el token corresponda a un usuario
Cliente? cli = con.Clientes.FirstOrDefault(x => x.Token == token);
if (cli == null || cli.Dni == 0) return false;
// obtengo una lista de los permisos
var permisos = con.Clientes
.Where(x => x.Dni == cli.Dni)
.SelectMany(x => x.Idgrupos)
.SelectMany(x => x.Idpermisos)
.Distinct();
/////////////////////////////////////////////////////////////////
//Esto esta comentado porque antes pasaba el string del path de la url, es una mala idea a muchos niveles
/////////////////////////////////////////////////////////////////
//me inspiré y hice un regex pero si eliminaba los primeros 8(?) caracteres del string era lo mismo
//Match match = Regex.Match(path, @"^/accion/(\d+)$");
//int.TryParse(match.Groups[1].Value, out int idpermiso);
/////////////////////////////////////////////////////////////////
Parallel.ForEach(permisos, (x, i) =>{
if (x.Id == idpermiso) {
tienePermiso = true;
}
});
return tienePermiso;
}
#if DEBUG
public bool CrearPermiso(string descripcion) {
var con = Context;
int mx = con.Permisos.Max(x => x.Id);
Permiso per = new Permiso{
Id = mx+1,
Descripcion = descripcion
};
con.Permisos.Add(per);
return Guardar(con);
}
#endif
}