pcpuma_unam_api/src/auth/auth.service.ts
2022-10-04 20:46:31 -05:00

79 lines
2.6 KiB
TypeScript

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) };
});
}
}