Pular para o conteúdo principal

Flujo de Autenticación

Login con email/password

Login con Google OAuth

App Initialization (Angular)

initializeAuth() se llama desde el constructor del Auth service (no desde APP_INITIALIZER). La app arranca inmediatamente sin bloquear el bootstrap — la verificación de sesión corre en paralelo.

Los guards esperan a que authInitialized$ emita true antes de evaluar el estado de sesión, evitando falsos negativos durante el arranque.

Guards Angular

GuardAplicado aComportamiento
isLoggedIn/dashboard, /crm, /gtms, /workspaces, etc.Si no hay currentUser$ → redirige a /login
notLoggedIn/login, /register, /forgot-passwordSi hay currentUser$ → redirige a /
UnsavedChangesGuard/dashboardConfirma salida si hay cambios sin guardar

HTTP Interceptor (Angular)

Todas las requests del frontend incluyen withCredentials: true (para enviar el cookie JWT). Si cualquier endpoint devuelve 401: logout automático + redirect a /login.

JWT Payload

{
"userId": "uuid",
"iat": 1711900000,
"exp": 1711986400
}

Fuentes donde node-api busca el token (en orden):

  1. Cookie token (HttpOnly)
  2. Header Authorization: Bearer <token>
  3. Query param ?token=<token> (para SSE streams)