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:
co-authored by
Copilot
parent
b5e6a9285f
commit
6e27032ac6
@@ -11,6 +11,10 @@ func PortalRoutes(app fiber.Router) {
|
||||
app.Get("/portal/login", controllers.PortalLoginPage)
|
||||
app.Post("/portal/login", controllers.PortalLoginPost)
|
||||
app.Get("/portal/logout", controllers.PortalLogout)
|
||||
app.Get("/portal/forgot-password", controllers.PortalForgotPasswordPage)
|
||||
app.Post("/portal/forgot-password", controllers.PortalForgotPasswordPost)
|
||||
app.Get("/portal/reset-password", controllers.PortalResetPasswordPage)
|
||||
app.Post("/portal/reset-password", controllers.PortalResetPasswordPost)
|
||||
|
||||
// ─── Rutas protegidas ──────────────────────────────────────────────────────
|
||||
portal := app.Group("/portal").Use(middlewares.PortalAuth())
|
||||
|
||||
Reference in New Issue
Block a user