bueno ya esta implemntado todo lo de permisos de forma recursiva

This commit is contained in:
2025-04-25 19:46:18 -03:00
parent 8e385a4710
commit 99591b8cc2
3 changed files with 36 additions and 25 deletions

View File

@@ -7,7 +7,6 @@ public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
{
public IQueryable<Grupo>? ListarPermisos(string email)
{
//WIP Aca tengo que modificar esto para que haga una busqueda de profundidad para los permisos
var con = Context;
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
if (cli == null) return null;
@@ -47,19 +46,26 @@ public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
Cliente? cli = con.Clientes.FirstOrDefault(x => x.Token == token);
if (cli == null || cli.Dni == 0) return false;
var permisos = con.Clientes
var grupos = con.Clientes
.Where(x => x.Dni == cli.Dni)
.SelectMany(x => x.Idgrupos)
.SelectMany(x => x.Idpermisos)
.Distinct();
.Include(x => x.Idpermisos)
.Include(x => x.IdGrupoHijos)
.ThenInclude(x => x.Idpermisos)
.ToList();
Parallel.ForEach(permisos, (x, i) =>
foreach (var grupo in grupos)
{
if (x.Id == idpermiso)
var visitados = new HashSet<int>();
var todosLosPermisos = new HashSet<Permiso>();
grupo.ObtenerPermisos(todosLosPermisos, visitados);
if (todosLosPermisos.Any(p => p.Id == idpermiso))
{
tienePermiso = true;
break;
}
});
}
return tienePermiso;
}