fix(auth): flujo de recuperación de contraseña usa email en vez de usuario

- login.html: corregir link roto /password/reset → /request-password-reset
- request-password-reset.html: reescribir — pide email, AJAX, diseño de la app
- RequestPasswordResetPost: buscar por email (GetUserByEmail), no revela si
  el correo existe o no (misma respuesta siempre — seguridad)
- password-reset.html: reescribir — eliminar campo nombre_usuario redundante,
  validación de contraseñas en cliente, diseño consistente con el resto del app
- PasswordResetPost: usar c.Locals("email") del token (ya validado por
  middleware) en vez de nombre_usuario del form
- password_reset.go middleware: ampliar expiración de token de 5 min a 1 hora

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-06 22:17:38 -05:00
co-authored by Claude Sonnet 4.6
parent 37648724f8
commit e937676160
5 changed files with 261 additions and 104 deletions
+1 -1
View File
@@ -71,7 +71,7 @@
<!-- Forgot password link -->
<div class="flex justify-end">
<a href="/password/reset" class="text-xs font-medium hover:underline" style="color:#8eb02f">
<a href="/request-password-reset" class="text-xs font-medium hover:underline" style="color:#8eb02f">
¿Olvidaste tu contraseña?
</a>
</div>