Última actualización: 25 de octubre de 2026
Autenticación
Gestiona el acceso web, el acceso mobile, el refresh de sesión y el onboarding inicial de usuarios y tenants.
Qué hace
Este módulo resuelve todo el ciclo de acceso al sistema:
- login web con cookies
httpOnly - login mobile con tokens en JSON
- refresh automático de sesión usando
refreshToken - cambio de tenant activo cuando una persona pertenece a más de una empresa
- callback de autenticación externa
- onboarding posterior al registro
Qué incluye
- login web con cookies
- login mobile con tokens en JSON
- refresh y logout
- cambio de tenant activo
- callback de autenticación externa
- onboarding inicial de usuario
Reglas importantes
- El login web y el mobile no comparten el mismo mecanismo de persistencia.
- El refresh depende de la cookie
refreshToken; si falta, la sesión se considera expirada. - Un usuario puede autenticarse bien pero quedar frenado por licencia, tenant o onboarding pendiente.
- El cambio de tenant activo modifica el contexto completo del usuario.
Flujos principales
Login web
loginActionvalida credenciales y no devuelve el JWT en el body.- La sesión se persiste en cookies seguras:
auth_tokenyrefreshToken. - Si el usuario está inactivo, bloqueado o sin tenant habilitado, el acceso se rechaza.
Login mobile
POST /api/mobile/v1/auth/loginusa la misma lógica de autenticación.- Devuelve
accessTokenyrefreshTokenen JSON. - No usa cookies, porque el cliente mobile administra los tokens.
Refresh y cierre de sesión
refreshSessionActionrenueva la sesión usando la cookierefreshToken.- Si el refresh falla o expiró, borra cookies y obliga a reingresar.
logoutActioninvalida la sesión y limpia cookies.
Cambio de tenant activo
getMyTenantsActionlista las empresas a las que tiene acceso el usuario.switchActiveTenantActioncambia el tenant activo y reescribe las cookies.- Esto impacta permisos, features disponibles y alcance multi-tenant.
Onboarding
- El flujo
/onboardingguía al usuario después del registro. - El backend maneja estados como
selecting_user_type,selecting_tenant,awaiting_manager_approvalyawaiting_global_approval. - Los endpoints de onboarding viven en
/api/auth/onboarding/*.
Cuándo usarlo
- Cuando una persona no puede iniciar sesión o perdió el acceso.
- Cuando hay que cambiar de empresa activa sin cerrar sesión.
- Cuando querés verificar en qué paso del onboarding quedó un usuario nuevo.
- Cuando una app mobile necesita autenticarse sin cookies.
Qué conviene cuidar
- Si un problema parece de permisos, muchas veces en realidad viene de tenant activo o onboarding.
- Conviene distinguir claramente errores de credenciales, sesión y licenciamiento.
Rutas y referencias
src/features/auth/actions.tssrc/features/auth/api/handlers.tssrc/app/api/mobile/v1/auth/login/route.tssrc/app/onboarding/page.tsx
En una frase
Centraliza cómo entra, mantiene y completa su acceso cada usuario en web y mobile.