Iniciar sesión
POST/auth/login
Propósito
Autentica a un usuario y devuelve un token JWT válido para acceder a los endpoints protegidos de la API.
Objetivo
Permitir que usuarios registrados (empresa o transportista) inicien sesión y obtengan un token JWT que incluye información del perfil, tipo de cuenta y estado de métodos de pago.
Casos de uso
- Inicio de sesión desde la aplicación web o móvil.
- Obtener un JWT fresco cuando el token anterior ha expirado.
- Primera autenticación tras activar la cuenta por email.
Flujo de autenticación
flowchart TD
A[Recibir POST /auth/login] --> B{¿Email proporcionado?}
B -->|No| C[400 FORM_DATA_NOT_VALID]
B -->|Sí| D{¿Usuario existe?}
D -->|No| E[400 WRONG_CREDENTIALS]
D -->|Sí| F{¿Password proporcionado?}
F -->|No| G[400 FORM_DATA_NOT_VALID]
F -->|Sí| H{¿Password válido?}
H -->|No| I[400 WRONG_CREDENTIALS]
H -->|Sí| J{¿Empresa/transportista asociada?}
J -->|No| K[401 CIA_NOT_FOUND]
J -->|Sí| L[Sincronizar Stripe si company]
L --> M[Registrar lastSignInAt e IP]
M --> N[Registrar acceso asíncrono]
N --> O[Generar JWT con datos del perfil]
O --> P[200 OK - Token JWT]
Detalles técnicos
- Busca el usuario en
CompanyUserporemail. - Busca la empresa asociada por
usersy, como fallback, portruckers. - Si la empresa no es
trucker, sincroniza cliente en Stripe si no existe aún un registro de billing. - Registra
lastSignInAtylastSignInIpen el usuario. - Guarda un registro de acceso asíncrono (
accessService.setAccess). - El JWT incluye: datos del usuario,
accountType,hasSign,hasPaymentMethod; y para truckers:hasVehicles,hasDrivers.
Campos obligatorios: email, password.
Autenticación
No requiere autenticación previa.
Request
Responses
- 200
- 400
- 401
- 500
Login exitoso. Devuelve el token JWT en el campo data
Response Headers
Credenciales inválidas o datos del formulario incompletos (email o password faltantes).
Response Headers
Usuario no activo, bloqueado o sin empresa/transportista asociada
Response Headers
Error interno no controlado durante el proceso de autenticación