From f7e8d273d2858c339223b639278e280167653eae Mon Sep 17 00:00:00 2001 From: Lizandro Guarnizo <77708265+lizandrogd@users.noreply.github.com> Date: Fri, 15 May 2026 15:47:49 -0500 Subject: [PATCH] up --- rest/controllers/portal_controller.go | 4 +++- rest/middlewares/portal_auth.go | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/rest/controllers/portal_controller.go b/rest/controllers/portal_controller.go index 0982b7c..e1630c8 100644 --- a/rest/controllers/portal_controller.go +++ b/rest/controllers/portal_controller.go @@ -15,7 +15,9 @@ import ( // ─── Auth ───────────────────────────────────────────────────────────────────── func PortalLoginPage(c *fiber.Ctx) error { - if auth.IsPortalLoggedIn(c) { + // Usar PortalUser (validación completa) en vez de IsPortalLoggedIn (solo key) + // para evitar loops cuando hay sesión obsoleta pero el usuario ya no existe en DB. + if user, err := auth.PortalUser(c); err == nil && user != nil { return c.Redirect("/portal/dashboard") } return c.Render("portal/login", fiber.Map{ diff --git a/rest/middlewares/portal_auth.go b/rest/middlewares/portal_auth.go index 696455e..bf41fc4 100644 --- a/rest/middlewares/portal_auth.go +++ b/rest/middlewares/portal_auth.go @@ -7,11 +7,13 @@ import ( ) // PortalAuth protege las rutas del portal de clientes. -// Si no hay sesión activa, redirige a /portal/login. +// Si no hay sesión válida, destruye la sesión obsoleta y redirige a /portal/login. func PortalAuth() fiber.Handler { return func(c *fiber.Ctx) error { user, err := auth.PortalUser(c) if err != nil || user == nil { + // Limpiar sesión inválida/obsoleta para romper posibles redirect loops + _ = auth.DestroyPortalSession(c) return c.Redirect("/portal/login") } c.Locals("portalUser", user)