al recibir token crea usuario o operador con su modulo desde el inicio
This commit is contained in:
@@ -45,11 +45,11 @@ export class AuthService {
|
||||
.then((operador) => {
|
||||
this.validarLogin(operador, password);
|
||||
if (
|
||||
operador.institucion.id_institucion !==
|
||||
operador.institucion.id_institucion !=
|
||||
modulo.institucion.id_institucion
|
||||
)
|
||||
throw new ConflictException(
|
||||
'Este módulo no pertenece a tu institución, selecciona uno válido.',
|
||||
'Este módulo no pertenece a tu institución, selecciona una que si.',
|
||||
);
|
||||
|
||||
const payload: JwtPayload = {
|
||||
@@ -83,7 +83,7 @@ export class AuthService {
|
||||
!this.bcryptService.comparar(password, usuarioOperador.password)
|
||||
)
|
||||
throw new UnauthorizedException(
|
||||
'Usuario y/o password incorrectos, trata de nuevo.',
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,19 +1,54 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { ConflictException, Injectable } from '@nestjs/common';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { PassportStrategy } from '@nestjs/passport';
|
||||
import { Strategy, ExtractJwt } from 'passport-jwt';
|
||||
import { ModuloService } from 'src/modulo/modulo.service';
|
||||
import { Operador } from 'src/operador/entity/operador.entity';
|
||||
import { OperadorService } from 'src/operador/operador.service';
|
||||
import { Usuario } from 'src/usuario/entity/usuario.entity';
|
||||
import { UsuarioService } from 'src/usuario/usuario.service';
|
||||
import { Modulo } from '../../modulo/entity/modulo.entity';
|
||||
|
||||
import { JwtPayload } from '../dto/jwt-payload';
|
||||
|
||||
@Injectable()
|
||||
export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
constructor(private configService: ConfigService) {
|
||||
constructor(
|
||||
private configService: ConfigService,
|
||||
private moduloService: ModuloService,
|
||||
private operadorService: OperadorService,
|
||||
private usuarioService: UsuarioService,
|
||||
) {
|
||||
super({
|
||||
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
|
||||
secretOrKey: configService.get<string>('AUTH_SECRETKEY'),
|
||||
});
|
||||
}
|
||||
|
||||
validate(payload: JwtPayload) {
|
||||
return payload;
|
||||
async validate(payload: JwtPayload) {
|
||||
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
|
||||
{};
|
||||
|
||||
if (payload.id_usuario)
|
||||
await this.usuarioService
|
||||
.findById(payload.id_usuario, true, true)
|
||||
.then((usuario) => (user.usuario = usuario));
|
||||
else if (payload.id_operador)
|
||||
await this.operadorService
|
||||
.findById(payload.id_operador)
|
||||
.then(async (operador) => {
|
||||
user.operador = operador;
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
||||
if (payload.id_modulo)
|
||||
await this.moduloService
|
||||
.findById(payload.id_modulo)
|
||||
.then((modulo) => (user.modulo = modulo));
|
||||
else
|
||||
throw new ConflictException(
|
||||
'Credenciales no válidas, inicia sesión de nuevo.',
|
||||
);
|
||||
}
|
||||
});
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user