primeros cambios para manejar los permisos y grupos
This commit is contained in:
25
Modelo/RepositorioGrupos.cs
Normal file
25
Modelo/RepositorioGrupos.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
#if DEBUG
|
||||
|
||||
using Entidades;
|
||||
|
||||
namespace Modelo;
|
||||
public class RepositorioGrupos: RepositorioBase<RepositorioGrupos> {
|
||||
public bool CrearGrupo(string descripcion)
|
||||
{
|
||||
var con = Context;
|
||||
|
||||
int mx = con.Grupos.Max(grupo => grupo.Id);
|
||||
Grupo gru = new Grupo{
|
||||
Id = mx+1,
|
||||
Nombre = descripcion,
|
||||
};
|
||||
con.Grupos.Add(gru);
|
||||
|
||||
return Guardar(con);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
17
Modelo/RepositorioInquilinos.cs
Normal file
17
Modelo/RepositorioInquilinos.cs
Normal file
@@ -0,0 +1,17 @@
|
||||
using Entidades.Dto;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Modelo;
|
||||
|
||||
public class RepositorioInquilinos: RepositorioBase<RepositorioInquilinos> {
|
||||
public IQueryable<InquilinoDto> GetInquilinos()
|
||||
{
|
||||
FormattableString sqlq =
|
||||
$"""
|
||||
SELECT I.Dni, I.Nombre, I.Apellido FROM Inquilinos
|
||||
""";
|
||||
return Context.Database.SqlQuery<InquilinoDto>(sqlq);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Text.RegularExpressions;
|
||||
using Entidades;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
@@ -14,6 +15,46 @@ public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
|
||||
.SelectMany(g => g.Idpermisos)
|
||||
.Distinct();
|
||||
return list;
|
||||
|
||||
}
|
||||
|
||||
public bool CheckPermisos(string token, string path){
|
||||
var con = Context;
|
||||
//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();
|
||||
|
||||
//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);
|
||||
bool tienePermiso = false;
|
||||
|
||||
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,
|
||||
Descripcion = descripcion
|
||||
};
|
||||
con.Permisos.Add(per);
|
||||
return Guardar(con);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
@@ -57,6 +57,10 @@ public class RepositorioUsuarios: RepositorioBase<RepositorioUsuarios>
|
||||
var usu = Context.Clientes.FirstOrDefault(x => x.Email == email);
|
||||
if (usu == null) return false;
|
||||
|
||||
#if DEBUG
|
||||
//Console.WriteLine(token + "\n" +usu.Token);
|
||||
#endif
|
||||
|
||||
return usu.Token == token;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user