jwt strategy final

This commit is contained in:
2022-12-19 06:52:02 -06:00
parent b3f53ea424
commit 2a1fab6911
+15 -17
View File
@@ -20,41 +20,42 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
private operadorService: OperadorService,
private usuarioService: UsuarioService,
) {
// Configuración de JWT
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
// Función que se ejecuta después de recibir un token válido
async validate(
// Payload del JWT que mandó el client
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario,
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario, // Payload del JWT que se mandó del client
) {
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
{};
// Si el token contiene un objeto Usuario en el
// Si el payload contiene un atributo llamado Usuario
if ('Usuario' in payload)
// Buscar a ese usuario en la db y lo asigna al objeto user
// Buscar y guardar
await this.usuarioService
.findById(payload.Usuario.id_usuario)
.then((usuario) => (user.usuario = usuario));
// Si el token contiene un objeto Operador en el
// Si el payload contiene un atributo llamado Operador
else if ('Operador' in payload)
// Buscar a ese operador en la db y lo asigna al objeto user
// Buscar y guardar
await this.operadorService
.findById(payload.Operador.id_operador)
.then(async (operador) => {
// Valida que la cuena del operador este activa
.then((operador) => {
// Validar que la cuenta de este operador este activa
if (!operador.activo)
throw new ForbiddenException('Esta cuenta esta desactivada.');
// Validar que venga en el payload con un objeto Modulo en
// caso de ser tipo usuario operador y asignarlo al objeto user
user.operador = operador;
// Si es una cuenta de operador
if (operador.tipoUsuario.id_tipo_usuario === 4) {
// Si el payload contiene un atributo llamado Modulo
if ('Modulo' in payload)
await this.moduloService
// Buscar y guardar
return this.moduloService
.findFullInfoById(payload.Modulo.id_modulo)
.then((modulo) => (user.modulo = modulo));
else
@@ -62,10 +63,7 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
'Credenciales no válidas, inicia sesión de nuevo.',
);
}
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;
return user; // Este objeto es el que extraemos de req.user en el controller
}
}