ahora esta la gestion de permisos

This commit is contained in:
2025-04-22 21:00:58 -03:00
parent e118a3acd2
commit eeb2ff1c65
5 changed files with 117 additions and 36 deletions

View File

@@ -6,4 +6,10 @@ public class PermisoBuilder : Builder<Permiso>
data.Descripcion = desc; data.Descripcion = desc;
return this; return this;
} }
public PermisoBuilder SetID(int id)
{
data.Id = id;
return this;
}
} }

View File

@@ -39,34 +39,35 @@ 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")] //creo que es codido duplicado [HttpPost("api/acciones/crear")] //creo que es codido duplicado
public IActionResult CrearAcciones([FromHeader(Name = "Auth")] string Auth, public IActionResult CrearAcciones([FromHeader(Name = "Auth")] string Auth,
[FromBody] CrearAccionesDto req) [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 (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" });
} }
*/
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" });
}
} }

View File

@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Modelo; using Modelo;
using Entidades;
using Entidades.Dto; using Entidades.Dto;
using AlquilaFacil.Builder; using AlquilaFacil.Builder;
namespace AlquilaFacil.Controllers; namespace AlquilaFacil.Controllers;
@@ -7,18 +8,40 @@ namespace AlquilaFacil.Controllers;
[ApiController] [ApiController]
public class PermisoController : ControllerBase public class PermisoController : ControllerBase
{ {
[HttpPost("api/admin/grupos")] [HttpPost("api/permisos")]
public IActionResult CrearPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm) public IActionResult CrearPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm)
{ {
//WIP
var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17); var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17);
if (ret1 == false) return BadRequest(new { message = "No tienes permiso para esto" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" });
if (String.IsNullOrWhiteSpace(perm.Descripcion)) return BadRequest(new { message = "No puede tener una descripcion vacia" }); if (String.IsNullOrWhiteSpace(perm.Descripcion)) return BadRequest(new { message = "No puede tener una descripcion vacia" });
if (perm.Descripcion.Length > 25) return BadRequest(new { message = "la descripcion no puede tener más de 25 caractéres" }); if (perm.Descripcion.Length > 25) return BadRequest(new { message = "la descripcion no puede tener más de 25 caractéres" });
var permiso = new PermisoBuilder().SetDescripcion(perm.Descripcion).Build(); var permiso = new PermisoBuilder().SetDescripcion(perm.Descripcion).Build();
var ret = RepositorioPermisos.Singleton.CrearPermiso(permiso); var ret = RepositorioPermisos.Singleton.CrearPermiso(permiso, cli);
return ret ? Ok() : BadRequest();
}
[HttpPatch("api/permisos")]
public IActionResult PatchPermiso([FromHeader(Name = "Auth")] string Auth, PermisoDto perm)
{
var ret1 = RepositorioPermisos.Singleton.CheckPermisos(Auth, 17);
if (ret1 == false) return BadRequest(new { message = "No tienes permiso para esto" });
Cliente? cli = RepositorioUsuarios.Singleton.ObtenerClientePorToken(Auth);
if (cli == null) return BadRequest(new { message = "No hay un cliente por el token que enviaste" });
if (perm.Id <= 0) return BadRequest(new { message = "No puede haber una id 0 o menor" });
if (String.IsNullOrWhiteSpace(perm.Descripcion)) return BadRequest(new { message = "No puede tener una descripcion vacia" });
if (perm.Descripcion.Length > 25) return BadRequest(new { message = "la descripcion no puede tener más de 25 caractéres" });
var permiso = new PermisoBuilder().SetDescripcion(perm.Descripcion).SetID(perm.Id).Build();
var ret = RepositorioPermisos.Singleton.PatchPermiso(permiso, cli);
return ret ? Ok() : BadRequest(); return ret ? Ok() : BadRequest();
} }

View File

@@ -8,6 +8,8 @@
import BotonEsquina from "../Componentes/BotonEsquina.svelte"; import BotonEsquina from "../Componentes/BotonEsquina.svelte";
import ModalEditarPermiso from "../Componentes/ModalEditarPermiso.svelte"; import ModalEditarPermiso from "../Componentes/ModalEditarPermiso.svelte";
import Login from "./login.svelte"; import Login from "./login.svelte";
import { Modal } from "@sveltestrap/sveltestrap";
import ModalLogs from "../Componentes/ModalLogs.svelte";
const token: string = sessionStorage.getItem("token") || ""; const token: string = sessionStorage.getItem("token") || "";
@@ -60,12 +62,48 @@
} }
} }
function NuevoPermiso(a: PermisoDto): void { async function NuevoPermiso(a: PermisoDto) {
throw new Error("Function not implemented.WIP"); let b = a;
try {
const req = await fetch($urlG + "/api/permisos", {
method: "POST",
headers: {
Auth: token,
"Content-Type": "application/json",
},
body: JSON.stringify(b),
});
if (req.ok) {
obtenerPermisos();
return;
}
modaldat = "Hubieron problemas creando el permiso";
return;
} catch {
modaldat = "Fallo al hacer la request";
}
} }
function PatchPermiso(): void { async function PatchPermiso(a: PermisoDto) {
throw new Error("Function not implemented.WIP"); let b = a;
try {
const req = await fetch($urlG + "/api/permisos", {
method: "PATCH",
headers: {
Auth: token,
"Content-Type": "application/json",
},
body: JSON.stringify(b),
});
if (req.ok) {
obtenerPermisos();
return;
}
modaldat = "Hubieron problemas editando el permiso";
return;
} catch {
modaldat = "Fallo al hacer la request";
}
} }
</script> </script>

View File

@@ -51,11 +51,24 @@ public class RepositorioPermisos : RepositorioBase<RepositorioPermisos>
return tienePermiso; return tienePermiso;
} }
public bool CrearPermiso(Permiso per) public bool CrearPermiso(Permiso per, Cliente cli)
{ {
var con = Context; var con = Context;
per.Id = con.Permisos.Any() ? con.Permisos.Max(x => x.Id) + 1 : 1; per.Id = con.Permisos.Any() ? con.Permisos.Max(x => x.Id) + 1 : 1;
con.Permisos.Add(per); con.Permisos.Add(per);
GenerarLog(con, cli.Dni, $"Creado Permiso {per.Descripcion}");
return Guardar(con); return Guardar(con);
} }
public bool PatchPermiso(Permiso per, Cliente cli)
{
var con = Context;
var perm = con.Permisos.FirstOrDefault(x => x.Id == per.Id);
if (perm == null) return false;
perm.Descripcion = per.Descripcion;
GenerarLog(con, cli.Dni, $"Editado Permiso {per.Id}");
return Guardar(con);
}
} }