añadido endpoint para crear permisos
This commit is contained in:
@@ -1,20 +1,20 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using Entidades.Dto;
|
using Entidades.Dto;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Modelo;
|
using Modelo;
|
||||||
using System.Text.Json;
|
using Entidades;
|
||||||
|
|
||||||
|
|
||||||
namespace AlquilaFacil.Controllers;
|
namespace AlquilaFacil.Controllers;
|
||||||
|
|
||||||
[ApiController]
|
[ApiController]
|
||||||
public class AccionesController: ControllerBase {
|
public class AccionesController : ControllerBase
|
||||||
|
{
|
||||||
|
|
||||||
[HttpGet("api/acciones")]
|
[HttpGet("api/acciones")]
|
||||||
public IActionResult ListarAccionesPorUsuario([FromHeader(Name ="Email")] string Email, [FromHeader(Name = "Auth")] string Auth) {
|
public IActionResult ListarAccionesPorUsuario([FromHeader(Name = "Email")] string Email, [FromHeader(Name = "Auth")] string Auth)
|
||||||
|
{
|
||||||
if (Email == "" || Email == null) return BadRequest();
|
if (Email == "" || Email == null) return BadRequest();
|
||||||
|
|
||||||
if (Auth == "") return Unauthorized(new { esValido = false});
|
if (Auth == "") return Unauthorized(new { esValido = false });
|
||||||
|
|
||||||
bool esValido = RepositorioUsuarios.Singleton.CheckToken(Email, Auth);
|
bool esValido = RepositorioUsuarios.Singleton.CheckToken(Email, Auth);
|
||||||
if (!esValido) return Unauthorized();
|
if (!esValido) return Unauthorized();
|
||||||
@@ -37,4 +37,34 @@ public class AccionesController: ControllerBase {
|
|||||||
var permisos = RepositorioGrupos.Singleton.ListarPermisosDeGrupo(req.Grupo);
|
var permisos = RepositorioGrupos.Singleton.ListarPermisosDeGrupo(req.Grupo);
|
||||||
return Ok(permisos);
|
return Ok(permisos);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
[HttpPost("api/acciones/crear")]
|
||||||
|
public IActionResult CrearAcciones([FromHeader(Name = "Auth")] string Auth,
|
||||||
|
[FromBody] CrearAccionesDto req)
|
||||||
|
{
|
||||||
|
if (string.IsNullOrEmpty(Auth)) return BadRequest();
|
||||||
|
|
||||||
|
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
|
||||||
|
if (cli == null) return Unauthorized();
|
||||||
|
|
||||||
|
var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 1); //wip lo voy a usar para crear el permiso que va
|
||||||
|
if (ret == false) return Unauthorized();
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(req.Descripcion))
|
||||||
|
{
|
||||||
|
return BadRequest(new { message = "La descripción no puede estar vacía" });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (req.Descripcion.Length > 25)
|
||||||
|
{
|
||||||
|
return BadRequest(new { message = "La descripción no puede ser mayor a 25 caracteres" });
|
||||||
|
}
|
||||||
|
|
||||||
|
var per = new Permiso
|
||||||
|
{
|
||||||
|
Descripcion = req.Descripcion,
|
||||||
|
}
|
||||||
|
var ret2 = RepositorioPermisos.Singleton.CrearPermiso(per);
|
||||||
|
return ret2 ? Ok(new { message = "se creo correctamente" }) : BadRequest(new { message = "No se pudo crear el permiso" });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
5
Entidades/Dto/CrearAccionesDto.cs
Normal file
5
Entidades/Dto/CrearAccionesDto.cs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
namespace Entidades.Dto;
|
||||||
|
public class CrearAccionesDto
|
||||||
|
{
|
||||||
|
public string Descripcion { get; set; } = "";
|
||||||
|
}
|
||||||
@@ -3,21 +3,26 @@ using Entidades;
|
|||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace Modelo;
|
namespace Modelo;
|
||||||
public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
|
public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
|
||||||
public object? ListarPermisos(string email) {
|
{
|
||||||
|
public object? ListarPermisos(string email)
|
||||||
|
{
|
||||||
var con = Context;
|
var con = Context;
|
||||||
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
|
Cliente? cli = con.Clientes.Include(x => x.Idgrupos).FirstOrDefault(c => c.Email == email);
|
||||||
if (cli == null) return null;
|
if (cli == null) return null;
|
||||||
|
|
||||||
var list = con.Clientes
|
var list = con.Clientes
|
||||||
.Where(c => c.Dni == cli.Dni)
|
.Where(c => c.Dni == cli.Dni)
|
||||||
.SelectMany(c => c.Idgrupos)
|
.SelectMany(c => c.Idgrupos)
|
||||||
.Include(x=> x.Idpermisos);
|
.Include(x => x.Idpermisos);
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CheckPermisos(string token, int idpermiso){
|
public bool CheckPermisos(string token, int idpermiso)
|
||||||
|
{
|
||||||
|
// Aca tengo que modificar esto para que haga una busqueda de profundidad para los permisos
|
||||||
|
//
|
||||||
var con = Context;
|
var con = Context;
|
||||||
bool tienePermiso = false;
|
bool tienePermiso = false;
|
||||||
|
|
||||||
@@ -41,12 +46,22 @@ public class RepositorioPermisos: RepositorioBase<RepositorioPermisos> {
|
|||||||
//int.TryParse(match.Groups[1].Value, out int idpermiso);
|
//int.TryParse(match.Groups[1].Value, out int idpermiso);
|
||||||
/////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
Parallel.ForEach(permisos, (x, i) =>{
|
Parallel.ForEach(permisos, (x, i) =>
|
||||||
if (x.Id == idpermiso) {
|
{
|
||||||
|
if (x.Id == idpermiso)
|
||||||
|
{
|
||||||
tienePermiso = true;
|
tienePermiso = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return tienePermiso;
|
return tienePermiso;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public bool CrearPermiso(Permiso per)
|
||||||
|
{
|
||||||
|
var con = Context;
|
||||||
|
per.Id = con.Permisos.Any() ? con.Permisos.Max(x => x.Id) + 1 : 1;
|
||||||
|
con.Permisos.Add(per);
|
||||||
|
return Guardar(con);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user