import { BadRequestException, Injectable, UnauthorizedException, } from '@nestjs/common'; import { JwtService } from '@nestjs/jwt'; import { BcryptService } from '../bcrypt/bcrypt.service'; import { ModuloService } from '../modulo/modulo.service'; import { OperadorService } from '../operador/operador.service'; import { UsuarioService } from '../usuario/usuario.service'; @Injectable() export class AuthService { constructor( private bcryptService: BcryptService, private jwtService: JwtService, private moduloService: ModuloService, private operadorService: OperadorService, private usuarioService: UsuarioService, ) {} loginAdmin(admin: string, password: string) { return this.operadorService.informacionAdmin(admin).then((data) => { if ( !data.operador || !this.bcryptService.comparar(password, data.password) ) throw new BadRequestException( 'Usuario y/o password incorrectos, ingresa unas credenciales válidas.', ); if (!data.activo) throw new UnauthorizedException( 'Esta cuenta se encuentra desactivada.', ); return { token: this.jwtService.sign(data.operador) }; }); } async loginOperador(id_modulo: number, operador: string, password: string) { const modulo = await this.moduloService.findInfoModuloById(id_modulo); return this.operadorService .informacionOperador(modulo.institucion, operador) .then((data) => { if ( !data.operador || !this.bcryptService.comparar(password, data.password) ) throw new BadRequestException( 'Usuario y/o password incorrectos, ingresa unas credenciales válidas.', ); if (!data.activo) throw new UnauthorizedException( 'Esta cuenta se encuentra desactivada.', ); if (data.operador.tipoUsuario.id_tipo_usuario === 4) data.operador.id_modulo = modulo.id_modulo; return { token: this.jwtService.sign(data.operador) }; }); } loginUsuario(usuario: string, password: string) { return this.usuarioService .informacionUsuarioByUsuario(usuario) .then((data) => { if (!data.password) throw new BadRequestException('Este usuario no ha sido registrado.'); if ( !data.usuario || !this.bcryptService.comparar(password, data.password) ) throw new BadRequestException( 'Usuario y/o password incorrectos, ingresa unas credenciales válidas.', ); return { token: this.jwtService.sign(data.usuario) }; }); } }