Guards
Ubicados en src/app/core/guards/.
AuthGuard — auth.guard.ts
Protege rutas que requieren sesión de usuario activa.
Cómo funciona:
- Extrae el token del header
x-api-key - Verifica y decodifica el JWT con
JwtService - Consulta el usuario en BD mediante
UserService - Valida que
user.isActive === true - Inyecta el usuario en
request.user
Uso:
@UseGuards(AuthGuard)
// o con el decorador abreviado:
@Auth()
Errores que lanza:
401 Unauthorized— token inválido o expirado403 Forbidden— usuario inactivo
ApiKeyGuard — api-key.guard.ts
Protege endpoints destinados a clientes externos (integraciones de terceros).
Cómo funciona:
- Extrae el
apiKeydel body de la request - Hashea la key y la busca en BD (
ApiKeyService) - Valida que
isActive === truey que no haya expirado (dateExpiration) - Valida que el
origindel request esté en eldomainWhitelistdel tenant
Uso:
@UseGuards(ApiKeyGuard)
// o:
@ApiKeyAuth()
Errores que lanza:
401 Unauthorized— key no encontrada, inactiva o expirada403 Forbidden— dominio no está en el whitelist del tenant
Diferencia entre los dos guards
AuthGuard | ApiKeyGuard | |
|---|---|---|
| Usado por | Usuarios internos (agentes) | Clientes externos / integraciones |
| Credencial | JWT en header x-api-key | API Key en body |
| Validación extra | user.isActive | Expiración + domain whitelist |