auth mejorado código
This commit is contained in:
parent
445abb8910
commit
b5cc15b3d4
@ -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: '' } } },
|
||||||
|
@ -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.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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()
|
||||||
|
Loading…
Reference in New Issue
Block a user