bueno ya esta implemntado todo lo de permisos de forma recursiva
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user