@stefaninigo/security-client
v1.0.3
Published
StefaniniGo Security Client SDK - Guards, decorators and HTTP client for authentication and authorization
Maintainers
Readme
@stefaninigo/security-client
Cliente SDK de Security para StefaniniGo. Proporciona guards, decorators y servicios para autenticación y autorización en servicios NestJS.
Instalación
npm install @stefaninigo/security-clientConfiguración
1. Configurar npm registry
Crear .npmrc en la raíz del proyecto:
@stefaninigo:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}2. Importar módulo
import { SecurityClientModule } from '@stefaninigo/security-client';
@Module({
imports: [
SecurityClientModule.forRoot({
securityServiceUrl: process.env.SECURITY_SERVICE_URL || 'http://localhost:3000',
timeout: 5000, // opcional
}),
],
})
export class AppModule {}3. Usar en controllers
import { Controller, Get, UseGuards } from '@nestjs/common';
import { Roles, CognitoAuthGuard, RoleGuard, UserRole } from '@stefaninigo/security-client';
@Controller('clients')
@UseGuards(CognitoAuthGuard, RoleGuard)
export class ClientsController {
@Get()
@Roles(UserRole.ROOT, UserRole.ADMIN)
async listClients() {
// El usuario autenticado está disponible en request.user
}
}API
Guards
- CognitoAuthGuard: Valida tokens JWT de AWS Cognito y obtiene información del usuario desde el servicio Security
- RoleGuard: Valida que el usuario tenga uno de los roles requeridos
Decorators
- @Roles(...roles): Especifica los roles requeridos para acceder a un endpoint
Types
- UserRole: Enum con los roles disponibles (ROOT, ADMIN, DISPATCHER, TECHNICIAN)
- UserStatus: Enum con los estados de usuario (ACTIVE, PENDING, BLOCKED)
- AuthUser: Interface con la información del usuario autenticado
Variables de entorno requeridas
AWS_USER_POOL_ID: ID del User Pool de CognitoAWS_CLIENT_ID: Client ID de CognitoSECURITY_SERVICE_URL: URL del servicio Security (opcional si se pasa en forRoot)
Notas
- El guard valida el JWT localmente con Cognito
- Luego obtiene la información completa del usuario desde el servicio Security
- Los roles se validan contra la información del usuario obtenida de Security
