feat(portal): agregar flujo de recuperación de contraseña

- Nuevo modelo PortalPasswordResetToken con token seguro (32 bytes, 1h vigencia)
- AutoMigrate del nuevo modelo en main.go
- SendPortalPasswordResetEmail con diseño consistente al app
- Handlers: PortalForgotPasswordPage/Post y PortalResetPasswordPost/Page
- Rutas públicas GET/POST /portal/forgot-password y /portal/reset-password
- Vistas forgot_password.html y reset_password.html con validación JS
- Enlace ¿Olvidaste tu contraseña? en login.html + soporte mensaje success

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
Lizandro Guarnizo
2026-05-19 15:25:53 -05:00
co-authored by Copilot
parent b5e6a9285f
commit 6e27032ac6
8 changed files with 320 additions and 1 deletions
+2
View File
@@ -71,6 +71,8 @@ func main() {
// Partner
&models.PartnerRecurso{},
&models.PartnerComunicado{},
// Portal: recuperación de contraseña
&models.PortalPasswordResetToken{},
)
// Seed automático (idempotente) de módulos del sistema
migrations.SeedRenovaciones()