Skip to main content

Guards

Ubicados en src/app/core/guards/.

AuthGuard — auth.guard.ts

Protege rutas que requieren sesión de usuario activa.

Cómo funciona:

  1. Extrae el token del header x-api-key
  2. Verifica y decodifica el JWT con JwtService
  3. Consulta el usuario en BD mediante UserService
  4. Valida que user.isActive === true
  5. Inyecta el usuario en request.user

Uso:

@UseGuards(AuthGuard)
// o con el decorador abreviado:
@Auth()

Errores que lanza:

  • 401 Unauthorized — token inválido o expirado
  • 403 Forbidden — usuario inactivo

ApiKeyGuard — api-key.guard.ts

Protege endpoints destinados a clientes externos (integraciones de terceros).

Cómo funciona:

  1. Extrae el apiKey del body de la request
  2. Hashea la key y la busca en BD (ApiKeyService)
  3. Valida que isActive === true y que no haya expirado (dateExpiration)
  4. Valida que el origin del request esté en el domainWhitelist del tenant

Uso:

@UseGuards(ApiKeyGuard)
// o:
@ApiKeyAuth()

Errores que lanza:

  • 401 Unauthorized — key no encontrada, inactiva o expirada
  • 403 Forbidden — dominio no está en el whitelist del tenant

Diferencia entre los dos guards

AuthGuardApiKeyGuard
Usado porUsuarios internos (agentes)Clientes externos / integraciones
CredencialJWT en header x-api-keyAPI Key en body
Validación extrauser.isActiveExpiración + domain whitelist