Files
pcpuma_unam_api/src/auth/auth.service.ts
T

101 lines
3.4 KiB
TypeScript
Raw Normal View History

2022-04-21 21:52:40 -05:00
import {
2022-08-31 11:29:48 -05:00
BadRequestException,
2022-04-21 21:52:40 -05:00
Injectable,
UnauthorizedException,
} from '@nestjs/common';
2022-04-21 16:31:26 -05:00
import { JwtService } from '@nestjs/jwt';
2022-10-15 23:51:56 -05:00
import { Operador } from '../operador/entity/operador.entity';
2022-04-21 20:33:05 -05:00
import { BcryptService } from '../bcrypt/bcrypt.service';
2022-04-21 21:52:40 -05:00
import { ModuloService } from '../modulo/modulo.service';
2022-04-21 20:33:05 -05:00
import { OperadorService } from '../operador/operador.service';
import { UsuarioService } from '../usuario/usuario.service';
2022-10-15 23:51:56 -05:00
import { JwtPayloadAdmin } from './dto/jwt-payload-admin';
import { JwtPayloadOperador } from './dto/jwt-payload-operador';
import { JwtPayloadUsuario } from './dto/jwt-payload-usuario';
2022-04-21 16:31:26 -05:00
@Injectable()
export class AuthService {
2022-04-21 20:33:05 -05:00
constructor(
private bcryptService: BcryptService,
2022-04-21 21:52:40 -05:00
private jwtService: JwtService,
private moduloService: ModuloService,
2022-04-21 20:33:05 -05:00
private operadorService: OperadorService,
private usuarioService: UsuarioService,
) {}
2022-04-21 16:31:26 -05:00
2022-05-02 12:45:12 -05:00
loginAdmin(admin: string, password: string) {
2022-10-15 23:51:56 -05:00
return this.operadorService.findInfoOperadorAdmin(admin).then((admin) => {
this.validacionBasica(admin, password);
const JwtPayload: JwtPayloadAdmin = {
Operador: {
id_operador: admin.id_operador,
operador: admin.operador,
nombre: admin.nombre,
institucion: {
id_institucion: admin.institucion.id_institucion,
},
tipoUsuario: {
id_tipo_usuario: admin.tipoUsuario.id_tipo_usuario,
},
},
};
return { token: this.jwtService.sign(JwtPayload) };
2022-04-21 20:33:05 -05:00
});
}
2022-06-13 05:33:53 -05:00
async loginOperador(id_modulo: number, operador: string, password: string) {
2022-10-04 20:46:31 -05:00
const modulo = await this.moduloService.findInfoModuloById(id_modulo);
2022-04-21 21:52:40 -05:00
return this.operadorService
2022-10-15 23:51:56 -05:00
.findInfoOperador(modulo.institucion, operador)
.then((operador) => {
this.validacionBasica(operador, password);
const JwtPayload: JwtPayloadOperador = {
Operador: {
id_operador: operador.id_operador,
operador: operador.operador,
nombre: operador.nombre,
institucion: {
id_institucion: operador.institucion.id_institucion,
},
tipoUsuario: {
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
},
},
};
if (operador.tipoUsuario.id_tipo_usuario === 4)
JwtPayload.Modulo.id_modulo = modulo.id_modulo;
return { token: this.jwtService.sign(JwtPayload) };
2022-04-21 21:52:40 -05:00
});
2022-04-21 20:33:05 -05:00
}
2022-05-02 12:45:12 -05:00
loginUsuario(usuario: string, password: string) {
2022-08-31 23:43:55 -05:00
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) };
});
2022-05-02 12:45:12 -05:00
}
2022-10-15 23:51:56 -05:00
private validacionBasica(operador: Operador, password: string) {
if (!operador || !this.bcryptService.comparar(password, operador.password))
throw new BadRequestException(
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
);
if (!operador.activo)
throw new UnauthorizedException('Esta cuenta se encuentra desactivada.');
}
2022-04-21 16:31:26 -05:00
}