nuevo operador listo
This commit is contained in:
@@ -77,10 +77,8 @@ export class AuthController {
|
||||
|
||||
@Get('validar-token')
|
||||
@UseGuards(AuthGuard('jwt'))
|
||||
@ApiOperation({
|
||||
description: 'Endpoint utilizado para validar un token.',
|
||||
})
|
||||
@ApiOperation({ description: 'Endpoint utilizado para validar un token.' })
|
||||
validarToken() {
|
||||
return true;
|
||||
return { valido: true };
|
||||
}
|
||||
}
|
||||
|
||||
+51
-29
@@ -4,10 +4,14 @@ import {
|
||||
UnauthorizedException,
|
||||
} from '@nestjs/common';
|
||||
import { JwtService } from '@nestjs/jwt';
|
||||
import { Operador } from '../operador/entity/operador.entity';
|
||||
import { BcryptService } from '../bcrypt/bcrypt.service';
|
||||
import { ModuloService } from '../modulo/modulo.service';
|
||||
import { OperadorService } from '../operador/operador.service';
|
||||
import { UsuarioService } from '../usuario/usuario.service';
|
||||
import { JwtPayloadAdmin } from './dto/jwt-payload-admin';
|
||||
import { JwtPayloadOperador } from './dto/jwt-payload-operador';
|
||||
import { JwtPayloadUsuario } from './dto/jwt-payload-usuario';
|
||||
|
||||
@Injectable()
|
||||
export class AuthService {
|
||||
@@ -20,19 +24,23 @@ export class AuthService {
|
||||
) {}
|
||||
|
||||
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) };
|
||||
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) };
|
||||
});
|
||||
}
|
||||
|
||||
@@ -40,22 +48,27 @@ export class AuthService {
|
||||
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) };
|
||||
.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) };
|
||||
});
|
||||
}
|
||||
|
||||
@@ -75,4 +88,13 @@ export class AuthService {
|
||||
return { token: this.jwtService.sign(data.usuario) };
|
||||
});
|
||||
}
|
||||
|
||||
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.');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_operador: number;
|
||||
|
||||
institucion: { id_institucion: number };
|
||||
|
||||
operador: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
export interface JwtPayloadAdmin {
|
||||
Operador: {
|
||||
id_operador: number;
|
||||
nombre: string;
|
||||
operador: string;
|
||||
institucion: { id_institucion: number };
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_modulo: number;
|
||||
|
||||
id_operador: number;
|
||||
|
||||
institucion: { id_institucion: number };
|
||||
|
||||
operador: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
export interface JwtPayloadOperador {
|
||||
Operador: {
|
||||
id_operador: number;
|
||||
nombre: string;
|
||||
operador: string;
|
||||
institucion: { id_institucion: number };
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
};
|
||||
Modulo?: { id_modulo: number };
|
||||
}
|
||||
|
||||
@@ -1,18 +1,8 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
id_usuario: number;
|
||||
|
||||
instituciones: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[];
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
|
||||
usuario: string;
|
||||
export interface JwtPayloadUsuario {
|
||||
Usuario: {
|
||||
id_usuario: number;
|
||||
nombre: string;
|
||||
usuario: string;
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
export class JwtPayload {
|
||||
nombre: string;
|
||||
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
|
||||
id_modulo?: number;
|
||||
|
||||
id_operador?: number;
|
||||
|
||||
id_usuario?: number;
|
||||
|
||||
operador?: string;
|
||||
|
||||
usuario?: string;
|
||||
|
||||
institucion?: { id_institucion: number };
|
||||
|
||||
instituciones?: {
|
||||
id_institucion_usuario: number;
|
||||
institucionCarrera: {
|
||||
id_institucion_carrera: number;
|
||||
institucion: { id_institucion: number };
|
||||
carrera: { id_carrera: number };
|
||||
};
|
||||
}[];
|
||||
}
|
||||
@@ -8,7 +8,9 @@ import { UsuarioService } from '../../usuario/usuario.service';
|
||||
import { Modulo } from '../../modulo/entity/modulo.entity';
|
||||
import { Operador } from '../../operador/entity/operador.entity';
|
||||
import { Usuario } from '../../usuario/entity/usuario.entity';
|
||||
import { JwtPayload } from '../dto/jwt-payload';
|
||||
import { JwtPayloadAdmin } from '../dto/jwt-payload-admin';
|
||||
import { JwtPayloadOperador } from '../dto/jwt-payload-operador';
|
||||
import { JwtPayloadUsuario } from '../dto/jwt-payload-usuario';
|
||||
|
||||
@Injectable()
|
||||
export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
@@ -24,32 +26,32 @@ export class JwtStrategyService extends PassportStrategy(Strategy) {
|
||||
});
|
||||
}
|
||||
|
||||
async validate(payload: JwtPayload) {
|
||||
async validate(
|
||||
payload: JwtPayloadAdmin | JwtPayloadOperador | JwtPayloadUsuario,
|
||||
) {
|
||||
const user: { modulo?: Modulo; usuario?: Usuario; operador?: Operador } =
|
||||
{};
|
||||
|
||||
if (payload.id_usuario)
|
||||
if ('Usuario' in payload)
|
||||
await this.usuarioService
|
||||
.findById(payload.id_usuario, true, true)
|
||||
.findById(payload.Usuario.id_usuario, true, true)
|
||||
.then((usuario) => (user.usuario = usuario));
|
||||
else if (payload.id_operador)
|
||||
else if ('Operador' in payload)
|
||||
await this.operadorService
|
||||
.findInfoOperadorById(payload.id_operador)
|
||||
.findInfoOperadorById(payload.Operador.id_operador)
|
||||
.then(async (operador) => {
|
||||
if (!operador.activo)
|
||||
throw new ForbiddenException('Esta cuenta esta desactivada.');
|
||||
/*
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 4) {
|
||||
if (payload.id_modulo)
|
||||
if ('Modulo' in payload)
|
||||
await this.moduloService
|
||||
.findById(payload.id_modulo)
|
||||
.findInfoModuloById(payload.Modulo.id_modulo)
|
||||
.then((modulo) => (user.modulo = modulo));
|
||||
else
|
||||
throw new ForbiddenException(
|
||||
'Credenciales no válidas, inicia sesión de nuevo.',
|
||||
);
|
||||
}
|
||||
*/
|
||||
user.operador = operador;
|
||||
});
|
||||
return user;
|
||||
|
||||
Reference in New Issue
Block a user