listo auth
This commit is contained in:
@@ -21,27 +21,37 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
private usuarioService: UsuarioService,
|
||||
) {
|
||||
super({
|
||||
// Configuración de JWT
|
||||
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
|
||||
secretOrKey: configService.get<string>('AUTH_SECRETKEY'),
|
||||
});
|
||||
}
|
||||
|
||||
// Función que se ejecuta despues de aceptar un token valido
|
||||
async validate(
|
||||
// Payload del JWT que mandó el client
|
||||
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario,
|
||||
) {
|
||||
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
|
||||
{};
|
||||
|
||||
// Si el token contiene un objeto Usuario en el
|
||||
if ('Usuario' in payload)
|
||||
// Buscar a ese usuario en la db y lo asigna al objeto user
|
||||
await this.usuarioService
|
||||
.findInfoUsuarioById(payload.Usuario.id_usuario)
|
||||
.then((usuario) => (user.usuario = usuario));
|
||||
// Si el token contiene un objeto Operador en el
|
||||
else if ('Operador' in payload)
|
||||
// Buscar a ese operador en la db y lo asigna al objeto user
|
||||
await this.operadorService
|
||||
.findInfoOperadorById(payload.Operador.id_operador)
|
||||
.then(async (operador) => {
|
||||
// Valida que la cuena del operador este activa
|
||||
if (!operador.activo)
|
||||
throw new ForbiddenException('Esta cuenta esta desactivada.');
|
||||
// Validar que venga en el payload venga con un objeto Modulo en
|
||||
// caso de ser tipo usuario operador y asignarlo al objeto user
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
||||
if ('Modulo' in payload)
|
||||
await this.moduloService
|
||||
@@ -54,6 +64,8 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
}
|
||||
user.operador = operador;
|
||||
});
|
||||
// Este objeto retornado se encuentra en el objeto request
|
||||
// (El ojbeto que recibe toda la información de la petición)
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user