2022-04-22 02:52:40 +00:00
|
|
|
import {
|
|
|
|
ConflictException,
|
|
|
|
Injectable,
|
|
|
|
UnauthorizedException,
|
|
|
|
} from '@nestjs/common';
|
2022-04-21 21:31:26 +00:00
|
|
|
import { JwtService } from '@nestjs/jwt';
|
2022-04-22 01:33:05 +00:00
|
|
|
import { BcryptService } from '../bcrypt/bcrypt.service';
|
2022-04-22 02:52:40 +00:00
|
|
|
import { ModuloService } from '../modulo/modulo.service';
|
2022-04-22 01:33:05 +00:00
|
|
|
import { OperadorService } from '../operador/operador.service';
|
|
|
|
import { UsuarioService } from '../usuario/usuario.service';
|
2022-04-22 02:52:40 +00:00
|
|
|
import { JwtPayload } from './dto/jwt-payload';
|
2022-04-21 21:31:26 +00:00
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
export class AuthService {
|
2022-04-22 01:33:05 +00:00
|
|
|
constructor(
|
|
|
|
private bcryptService: BcryptService,
|
2022-04-22 02:52:40 +00:00
|
|
|
private jwtService: JwtService,
|
|
|
|
private moduloService: ModuloService,
|
2022-04-22 01:33:05 +00:00
|
|
|
private operadorService: OperadorService,
|
|
|
|
private usuarioService: UsuarioService,
|
|
|
|
) {}
|
2022-04-21 21:31:26 +00:00
|
|
|
|
|
|
|
validate() {}
|
2022-04-22 01:33:05 +00:00
|
|
|
|
2022-05-02 17:45:12 +00:00
|
|
|
loginAdmin(admin: string, password: string) {
|
2022-05-02 19:40:17 +00:00
|
|
|
return this.operadorService.findAdmin(admin, false).then((operador) => {
|
|
|
|
if (
|
|
|
|
!operador ||
|
|
|
|
!this.bcryptService.comparar(password, operador.password)
|
|
|
|
)
|
2022-04-22 01:33:05 +00:00
|
|
|
throw new UnauthorizedException(
|
2022-04-22 03:34:10 +00:00
|
|
|
'Usuario y/o password incorrectos, trata de nuevo.',
|
2022-04-22 01:33:05 +00:00
|
|
|
);
|
2022-05-02 17:45:12 +00:00
|
|
|
if (!operador.activo)
|
|
|
|
throw new UnauthorizedException(
|
|
|
|
'Esta cuenta se encuentra desactivada.',
|
|
|
|
);
|
2022-04-22 03:34:10 +00:00
|
|
|
|
|
|
|
const payload: JwtPayload = {
|
2022-05-02 17:45:12 +00:00
|
|
|
id_operador: operador.id_operador,
|
|
|
|
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
2022-04-22 03:34:10 +00:00
|
|
|
};
|
|
|
|
|
2022-05-02 17:45:12 +00:00
|
|
|
return { operador, token: this.jwtService.sign(payload) };
|
2022-04-22 01:33:05 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-04-22 02:52:40 +00:00
|
|
|
async loginOperador(
|
|
|
|
id_institucion: number,
|
|
|
|
id_modulo: number,
|
|
|
|
operador: string,
|
|
|
|
password: string,
|
|
|
|
) {
|
|
|
|
const modulo = await this.moduloService.findById(id_modulo);
|
|
|
|
|
|
|
|
return this.operadorService
|
2022-05-02 21:43:55 +00:00
|
|
|
.findByOperador(id_institucion, operador, false)
|
2022-04-22 02:52:40 +00:00
|
|
|
.then((operador) => {
|
2022-05-02 17:45:12 +00:00
|
|
|
if (
|
|
|
|
!operador ||
|
|
|
|
!this.bcryptService.comparar(password, operador.password)
|
|
|
|
)
|
2022-04-22 02:52:40 +00:00
|
|
|
throw new UnauthorizedException(
|
2022-04-22 03:34:10 +00:00
|
|
|
'Usuario y/o password incorrectos, trata de nuevo.',
|
2022-04-22 02:52:40 +00:00
|
|
|
);
|
|
|
|
if (!operador.activo)
|
|
|
|
throw new UnauthorizedException(
|
|
|
|
'Esta cuenta se encuentra desactivada.',
|
|
|
|
);
|
|
|
|
if (
|
|
|
|
modulo.institucion.id_institucion !=
|
|
|
|
operador.institucion.id_institucion
|
|
|
|
)
|
|
|
|
throw new ConflictException(
|
|
|
|
'El módulo seleccionado no pertenece a la misma institución al la que pertenece el operador.',
|
|
|
|
);
|
|
|
|
|
|
|
|
const payload: JwtPayload = {
|
|
|
|
id_operador: operador.id_operador,
|
|
|
|
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
|
|
|
id_modulo: modulo.id_modulo,
|
|
|
|
};
|
|
|
|
|
|
|
|
return { operador, token: this.jwtService.sign(payload) };
|
|
|
|
});
|
2022-04-22 01:33:05 +00:00
|
|
|
}
|
2022-05-02 17:45:12 +00:00
|
|
|
|
|
|
|
loginUsuario(usuario: string, password: string) {
|
|
|
|
return this.usuarioService.findByUsuario(usuario, false).then((usuario) => {
|
|
|
|
if (!usuario || !this.bcryptService.comparar(password, usuario.password))
|
|
|
|
throw new UnauthorizedException(
|
|
|
|
'Usuario y/o password incorrectos, trata de nuevo.',
|
|
|
|
);
|
|
|
|
|
|
|
|
const payload: JwtPayload = {
|
|
|
|
id_usuario: usuario.id_usuario,
|
|
|
|
id_tipo_usuario: usuario.tipoUsuario.id_tipo_usuario,
|
|
|
|
};
|
|
|
|
|
|
|
|
return { usuario, token: this.jwtService.sign(payload) };
|
|
|
|
});
|
|
|
|
}
|
2022-04-21 21:31:26 +00:00
|
|
|
}
|