diff --git a/src/auth/strategy/jwt-strategy.service.ts b/src/auth/strategy/jwt-strategy.service.ts index deb01ec..abb3dd1 100644 --- a/src/auth/strategy/jwt-strategy.service.ts +++ b/src/auth/strategy/jwt-strategy.service.ts @@ -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('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 } }