1. Update first controller:
- Add new method `CaminarContraAdmin` for changing contrasection
- Include HTTP PATCH handler
- Use camelCase for class names
2. Update second controller:
- Update method name from `caminarContraseña` to `caminarContraAdmin`
- Fix message "contraseña" to be more precise ("contraseña correcta")
3. Update modal component:
- Change `handleSubmit` event from `submit` (JS) to `POST` (Svelte)
- Ensure form validation in JavaScript
4. Update page admin/users to use CardLink for links
This commit is contained in:
@@ -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" });
|
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);
|
public record setemail(string EmailRecuperacion);
|
||||||
[HttpPut("/api/usuario/emailrecuperacion")]
|
[HttpPut("/api/usuario/emailrecuperacion")]
|
||||||
public IActionResult CambiarPass([FromHeader(Name = "Auth")] string Auth, [FromBody] setemail setemail)
|
public IActionResult CambiarPass([FromHeader(Name = "Auth")] string Auth, [FromBody] setemail setemail)
|
||||||
|
|||||||
@@ -4,6 +4,13 @@
|
|||||||
submit,
|
submit,
|
||||||
}: { close: () => void; submit: (e: Event, pass: string) => void } =
|
}: { close: () => void; submit: (e: Event, pass: string) => void } =
|
||||||
$props();
|
$props();
|
||||||
|
|
||||||
|
let password: string = $state("");
|
||||||
|
|
||||||
|
function handleSubmit(e: Event) {
|
||||||
|
e.preventDefault();
|
||||||
|
submit(e, password);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
@@ -23,27 +30,26 @@
|
|||||||
></button>
|
></button>
|
||||||
</div>
|
</div>
|
||||||
<div class="modal-body">
|
<div class="modal-body">
|
||||||
<form onsubmit={submit}>
|
<form onsubmit={handleSubmit}>
|
||||||
<!--
|
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="nombre" class="form-label">Nombre</label>
|
<label for="password" class="form-label"
|
||||||
<input type="text" id="nombre" class="form-control" bind:value={cli.nombre} required />
|
>Contraseña</label
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
type="password"
|
||||||
|
id="password"
|
||||||
|
class="form-control"
|
||||||
|
minlength="8"
|
||||||
|
required
|
||||||
|
bind:value={password}
|
||||||
|
/>
|
||||||
|
<div class="form-text">
|
||||||
|
La contraseña debe tener al menos 8 caracteres.
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
<button type="submit" class="btn btn-primary"
|
||||||
<label for="apellido" class="form-label">Apellido</label>
|
>Guardar</button
|
||||||
<input type="text" id="apellido" class="form-control" bind:value={cli.apellido} required />
|
>
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="domicilio" class="form-label">Domicilio</label>
|
|
||||||
<input type="text" id="domicilio" class="form-control" bind:value={cli.domicilio} required />
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label for="celular" class="form-label">Celular</label>
|
|
||||||
<input type="tel" id="celular" class="form-control" bind:value={cli.celular} required />
|
|
||||||
</div>
|
|
||||||
<button type="submit" class="btn btn-primary" onclick={(e)=>handleConfirm(e)}>Guardar</button>
|
|
||||||
-->
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte";
|
import BarraHorizontalConTexto from "../Componentes/BarraHorizontalConTexto.svelte";
|
||||||
import { fade, fly } from "svelte/transition";
|
import { fade, fly } from "svelte/transition";
|
||||||
import ModalModificarPropietarios from "../Componentes/ModalModificarPropietarios.svelte";
|
import ModalModificarPropietarios from "../Componentes/ModalModificarPropietarios.svelte";
|
||||||
import { CardLink } from "@sveltestrap/sveltestrap";
|
import { CardLink, Modal } from "@sveltestrap/sveltestrap";
|
||||||
import ModalRestablecerContra from "../Componentes/ModalRestablecerContra.svelte";
|
import ModalRestablecerContra from "../Componentes/ModalRestablecerContra.svelte";
|
||||||
|
|
||||||
let Clientes: Cliente[] = $state([]);
|
let Clientes: Cliente[] = $state([]);
|
||||||
@@ -248,20 +248,21 @@
|
|||||||
async function handleRestablecerContraseña(e: Event, pass: string) {
|
async function handleRestablecerContraseña(e: Event, pass: string) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
try {
|
try {
|
||||||
const req = await fetch($urlG + "", {
|
const req = await fetch($urlG + "/api/admin/contraseña", {
|
||||||
method: "POST",
|
method: "PATCH",
|
||||||
headers: {
|
headers: {
|
||||||
Auth: token || "",
|
Auth: token || "",
|
||||||
"Content-Type": "application/json",
|
"Content-Type": "application/json",
|
||||||
},
|
},
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
Dni: restablecercontracli?.dni,
|
Dni: restablecercontracli?.dni,
|
||||||
Pass: pass,
|
contraseña: pass,
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
//WIP
|
const js = await req.json();
|
||||||
if (req.ok) {
|
showmodalrestablecercontra = false;
|
||||||
}
|
restablecercontracli = null;
|
||||||
|
modaldata = js.message;
|
||||||
} catch {
|
} catch {
|
||||||
modaldata = "Falla la conexion al servidor";
|
modaldata = "Falla la conexion al servidor";
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user