auth mejorado código

This commit is contained in:
lemuel 2022-06-13 05:33:53 -05:00
parent 445abb8910
commit b5cc15b3d4
4 changed files with 24 additions and 50 deletions

View File

@ -40,7 +40,6 @@ export class AuthController {
value: { value: {
operador: '', operador: '',
password: '', password: '',
id_institucion: 200,
id_modulo: 1, id_modulo: 1,
}, },
}, },
@ -48,7 +47,6 @@ export class AuthController {
}) })
loginOperador(@Body() body: AuthLoginOperadorDto) { loginOperador(@Body() body: AuthLoginOperadorDto) {
return this.authService.loginOperador( return this.authService.loginOperador(
body.id_institucion,
body.id_modulo, body.id_modulo,
body.operador, body.operador,
body.password, body.password,
@ -56,7 +54,9 @@ export class AuthController {
} }
@Post('login-usuario') @Post('login-usuario')
@ApiOperation({ description: 'Endpoint utilizado para el login del usuario.' }) @ApiOperation({
description: 'Endpoint utilizado para el login del usuario.',
})
@ApiBody({ @ApiBody({
description: 'Todas las variables son obligatorias.', description: 'Todas las variables son obligatorias.',
examples: { ejemplo: { value: { usuario: '', password: '' } } }, examples: { ejemplo: { value: { usuario: '', password: '' } } },

View File

@ -4,6 +4,8 @@ import {
UnauthorizedException, UnauthorizedException,
} from '@nestjs/common'; } from '@nestjs/common';
import { JwtService } from '@nestjs/jwt'; import { JwtService } from '@nestjs/jwt';
import { Operador } from 'src/operador/entity/operador.entity';
import { Usuario } from 'src/usuario/entity/usuario.entity';
import { BcryptService } from '../bcrypt/bcrypt.service'; import { BcryptService } from '../bcrypt/bcrypt.service';
import { ModuloService } from '../modulo/modulo.service'; import { ModuloService } from '../modulo/modulo.service';
import { OperadorService } from '../operador/operador.service'; import { OperadorService } from '../operador/operador.service';
@ -20,21 +22,9 @@ export class AuthService {
private usuarioService: UsuarioService, private usuarioService: UsuarioService,
) {} ) {}
validate() {}
loginAdmin(admin: string, password: string) { loginAdmin(admin: string, password: string) {
return this.operadorService.findAdmin(admin, false).then((operador) => { return this.operadorService.findAdmin(admin, false).then((operador) => {
if ( this.validarLogin(operador, password);
!operador ||
!this.bcryptService.comparar(password, operador.password)
)
throw new UnauthorizedException(
'Usuario y/o password incorrectos, trata de nuevo.',
);
if (!operador.activo)
throw new UnauthorizedException(
'Esta cuenta se encuentra desactivada.',
);
const payload: JwtPayload = { const payload: JwtPayload = {
id_operador: operador.id_operador, id_operador: operador.id_operador,
@ -45,35 +35,13 @@ export class AuthService {
}); });
} }
async loginOperador( async loginOperador(id_modulo: number, operador: string, password: string) {
id_institucion: number,
id_modulo: number,
operador: string,
password: string,
) {
const modulo = await this.moduloService.findById(id_modulo); const modulo = await this.moduloService.findById(id_modulo);
return this.operadorService return this.operadorService
.findByOperador(id_institucion, operador, false) .findByOperador(modulo.institucion, operador, false)
.then((operador) => { .then((operador) => {
if ( this.validarLogin(operador, password);
!operador ||
!this.bcryptService.comparar(password, operador.password)
)
throw new UnauthorizedException(
'Usuario y/o password incorrectos, trata de nuevo.',
);
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 = { const payload: JwtPayload = {
id_operador: operador.id_operador, id_operador: operador.id_operador,
@ -87,10 +55,7 @@ export class AuthService {
loginUsuario(usuario: string, password: string) { loginUsuario(usuario: string, password: string) {
return this.usuarioService.findByUsuario(usuario, false).then((usuario) => { return this.usuarioService.findByUsuario(usuario, false).then((usuario) => {
if (!usuario || !this.bcryptService.comparar(password, usuario.password)) this.validarLogin(usuario, password);
throw new UnauthorizedException(
'Usuario y/o password incorrectos, trata de nuevo.',
);
const payload: JwtPayload = { const payload: JwtPayload = {
id_usuario: usuario.id_usuario, id_usuario: usuario.id_usuario,
@ -100,4 +65,16 @@ export class AuthService {
return { usuario, token: this.jwtService.sign(payload) }; return { usuario, token: this.jwtService.sign(payload) };
}); });
} }
validarLogin(usuarioOperador: Usuario | Operador, password: string) {
if (
!usuarioOperador ||
!this.bcryptService.comparar(password, usuarioOperador.password)
)
throw new UnauthorizedException(
'Usuario y/o password incorrectos, trata de nuevo.',
);
if (!usuarioOperador.activo)
throw new ConflictException('Esta cuenta se encuentra desactivada.');
}
} }

View File

@ -1,9 +1,6 @@
import { IsInt, IsString } from 'class-validator'; import { IsInt, IsString } from 'class-validator';
export class AuthLoginOperadorDto { export class AuthLoginOperadorDto {
@IsInt()
id_institucion: number;
@IsInt() @IsInt()
id_modulo: number; id_modulo: number;

View File

@ -1,7 +1,7 @@
import { IsNumberString, IsString } from 'class-validator'; import { IsString } from 'class-validator';
export class AuthLoginUsuarioDto { export class AuthLoginUsuarioDto {
@IsNumberString() @IsString()
usuario: string; usuario: string;
@IsString() @IsString()