Skip to main content

Módulo Auth

src/app/modules/auth/

Gestiona el login de usuarios internos (agentes/admins) y el login por frame (integración PostMessage).

Archivos

ArchivoDescripción
auth.module.tsMódulo NestJS, importa CoreAuthModule
repositories/auth.repository.tsConsultas a BD relacionadas con auth
services/auth.service.tsLógica: validación de credenciales, generación de tokens
services/auth.service.spec.tsTests unitarios del servicio
controllers/auth.controller.tsEndpoints HTTP
controllers/auth.controller.spec.tsTests del controlador
dtos/login.dto.tsBody del login estándar
dtos/frame-login.dto.tsBody del login por frame
domain/auth.domain.tsObjeto de dominio con el resultado del login
domain/frame-login.domain.tsObjeto de dominio del frame login
constants/frame-login.constants.tsConstantes del flujo PostMessage

Endpoints

MétodoRutaAuthDescripción
POST/api/v1/auth/loginNoLogin estándar email + password
POST/api/v1/auth/frame-loginNoLogin por integración Frame / PostMessage
GET/api/v1/auth/me@Auth()Retorna el usuario autenticado

DTOs

LoginDto

{
email: string // requerido, formato email
password: string // requerido
}

FrameLoginDto

{
token: string // token generado por el sistema origen (Frame)
tenantId: string // UUID del tenant
}

Flujo login estándar

POST /auth/login
→ AuthService.login(dto)
→ Busca usuario por email en BD
→ Compara password con bcrypt
→ Genera JWT con { sub: userId, email }
→ Retorna { accessToken, user }

Flujo Frame Login

POST /auth/frame-login
→ AuthService.frameLogin(dto)
→ Valida el token contra el tenant (tokens array del Tenant)
→ Verifica que no haya expirado
→ Retorna JWT igual al login estándar

Token JWT

El accessToken contiene:

{ "sub": "userId", "email": "user@example.com", "iat": ..., "exp": ... }

Duración configurable con JWT_EXPIRES_IN (default 1d).