diff --git a/Aspnet/Controllers/UsuarioController.cs b/Aspnet/Controllers/UsuarioController.cs index 02b0a16..754ff7d 100644 --- a/Aspnet/Controllers/UsuarioController.cs +++ b/Aspnet/Controllers/UsuarioController.cs @@ -41,6 +41,29 @@ public class UsuarioController : ControllerBase return ret ? Ok(new { message = "Contraseña cambiada con éxito" }) : BadRequest(new { message = "No se pudo cambiar la contraseña" }); } + public class bodyCambiarContraAdmin : bodyCambiarContraseña + { + public long Dni { get; set; } + } + + [HttpPatch("/api/admin/contraseña")] + public IActionResult CambiarPassAdmin([FromHeader(Name = "Auth")] string Auth, [FromBody] bodyCambiarContraAdmin body) + { + var ret = RepositorioPermisos.Singleton.CheckPermisos(Auth, 9); + if (!ret) return BadRequest(new { message = "No tienes permisos para cambiar contraseñas de usuario" }); + + if (body.contraseña.Length < 8 || string.IsNullOrWhiteSpace(body.contraseña)) return BadRequest(new { message = "La contraseña debe tener al menos 8 caracteres y no puede estar vacía" }); + + if (body.Dni <= 0) return BadRequest(new { message = "El DNI no puede estar vacío" }); + + Cliente? usu = RepositorioUsuarios.Singleton.ObtenerClientePorDni(body.Dni); + if (usu == null) return BadRequest(new { message = "No existe un usuario con ese DNI" }); + + ret = RepositorioUsuarios.Singleton.CambiarContraseña(body.contraseña, usu); + return ret ? Ok(new { message = "Contraseña cambiada con éxito" }) : BadRequest(new { message = "No se pudo cambiar la contraseña" }); + + } + public record setemail(string EmailRecuperacion); [HttpPut("/api/usuario/emailrecuperacion")] public IActionResult CambiarPass([FromHeader(Name = "Auth")] string Auth, [FromBody] setemail setemail) diff --git a/Front/src/Componentes/ModalRestablecerContra.svelte b/Front/src/Componentes/ModalRestablecerContra.svelte index 02b8713..b3d35b7 100644 --- a/Front/src/Componentes/ModalRestablecerContra.svelte +++ b/Front/src/Componentes/ModalRestablecerContra.svelte @@ -4,6 +4,13 @@ submit, }: { close: () => void; submit: (e: Event, pass: string) => void } = $props(); + + let password: string = $state(""); + + function handleSubmit(e: Event) { + e.preventDefault(); + submit(e, password); + }
diff --git a/Front/src/paginas/AdminUsuarios.svelte b/Front/src/paginas/AdminUsuarios.svelte index 05f444c..ac6ba1a 100644 --- a/Front/src/paginas/AdminUsuarios.svelte +++ b/Front/src/paginas/AdminUsuarios.svelte @@ -7,7 +7,7 @@ import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte"; import { fade, fly } from "svelte/transition"; import ModalModificarPropietarios from "../Componentes/ModalModificarPropietarios.svelte"; - import { CardLink } from "@sveltestrap/sveltestrap"; + import { CardLink, Modal } from "@sveltestrap/sveltestrap"; import ModalRestablecerContra from "../Componentes/ModalRestablecerContra.svelte"; let Clientes: Cliente[] = $state([]); @@ -248,20 +248,21 @@ async function handleRestablecerContraseña(e: Event, pass: string) { e.preventDefault(); try { - const req = await fetch($urlG + "", { - method: "POST", + const req = await fetch($urlG + "/api/admin/contraseña", { + method: "PATCH", headers: { Auth: token || "", "Content-Type": "application/json", }, body: JSON.stringify({ Dni: restablecercontracli?.dni, - Pass: pass, + contraseña: pass, }), }); - //WIP - if (req.ok) { - } + const js = await req.json(); + showmodalrestablecercontra = false; + restablecercontracli = null; + modaldata = js.message; } catch { modaldata = "Falla la conexion al servidor"; }