auth service final
This commit is contained in:
parent
53ef5893c6
commit
f893493b80
@ -24,12 +24,12 @@ export class AuthService {
|
||||
private usuarioService: UsuarioService,
|
||||
) {}
|
||||
|
||||
loginAdmin(admin: string, password: string) {
|
||||
loginAdmin(admin: string, password: string): Promise<{ token: string }> {
|
||||
return this.operadorService.findAdmin(admin).then((admin) => {
|
||||
this.validacionBasica(admin, password);
|
||||
this.validacionOperador(admin);
|
||||
|
||||
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
// Creamos payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
const JwtPayload: JwtPayloadAdmin = {
|
||||
Operador: {
|
||||
id_operador: admin.id_operador,
|
||||
@ -44,12 +44,15 @@ export class AuthService {
|
||||
JwtPayload.Operador.institucion = {
|
||||
id_institucion: admin.institucion.id_institucion,
|
||||
};
|
||||
// "Firmo"/creo el token
|
||||
return { token: this.jwtService.sign(JwtPayload) };
|
||||
return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
|
||||
});
|
||||
}
|
||||
|
||||
async loginOperador(id_modulo: number, operador: string, password: string) {
|
||||
async loginOperador(
|
||||
id_modulo: number,
|
||||
operador: string,
|
||||
password: string,
|
||||
): Promise<{ token: string }> {
|
||||
const modulo = await this.moduloService.findById(id_modulo);
|
||||
|
||||
return this.operadorService
|
||||
@ -58,7 +61,7 @@ export class AuthService {
|
||||
this.validacionBasica(operador, password);
|
||||
this.validacionOperador(operador);
|
||||
|
||||
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
// Creamos payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
const JwtPayload: JwtPayloadOperador = {
|
||||
Operador: {
|
||||
id_operador: operador.id_operador,
|
||||
@ -71,23 +74,20 @@ export class AuthService {
|
||||
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
|
||||
},
|
||||
},
|
||||
Modulo: { id_modulo: modulo.id_modulo },
|
||||
};
|
||||
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 4)
|
||||
JwtPayload.Modulo = { id_modulo: modulo.id_modulo };
|
||||
// "Firmo"/creo el token
|
||||
return { token: this.jwtService.sign(JwtPayload) };
|
||||
return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
|
||||
});
|
||||
}
|
||||
|
||||
loginUsuario(usuario: string, password: string) {
|
||||
loginUsuario(usuario: string, password: string): Promise<{ token: string }> {
|
||||
return this.usuarioService.findByUsuario(usuario).then((usuario) => {
|
||||
// Sin password = no registrado, valido que este registrado
|
||||
// Validamos que este registrado. Sin password = no registrado
|
||||
if (usuario && !usuario.password)
|
||||
throw new BadRequestException('Este usuario no ha sido registrado.');
|
||||
this.validacionBasica(usuario, password);
|
||||
|
||||
// Creo payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
// Creamos payload apartir de la interface que le corresponde a este tipo de usaurio
|
||||
const JwtPayload: JwtPayloadUsuario = {
|
||||
Usuario: {
|
||||
id_usuario: usuario.id_usuario,
|
||||
@ -99,16 +99,15 @@ export class AuthService {
|
||||
},
|
||||
};
|
||||
|
||||
// "Firmo"/creo el token
|
||||
return { token: this.jwtService.sign(JwtPayload) };
|
||||
return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
|
||||
});
|
||||
}
|
||||
|
||||
private validacionBasica(
|
||||
operadorUsuario: Operador | Usuario,
|
||||
password: string,
|
||||
) {
|
||||
// Valido que el operador o usuario existan y que el password sea el correcto
|
||||
): void {
|
||||
// Validamos que el operador o usuario existan y que el password que se envió coincida con el de la db
|
||||
if (
|
||||
!operadorUsuario ||
|
||||
!this.bcryptService.comparar(password, operadorUsuario.password)
|
||||
@ -116,11 +115,13 @@ export class AuthService {
|
||||
throw new BadRequestException(
|
||||
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
private validacionOperador(operador: Operador) {
|
||||
// Valido que el operador este activo
|
||||
private validacionOperador(operador: Operador): void {
|
||||
// Validamos que la cuenta del operador esta activa
|
||||
if (!operador.activo)
|
||||
throw new UnauthorizedException('Esta cuenta se encuentra desactivada.');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -6,5 +6,5 @@ export interface JwtPayloadOperador {
|
||||
institucion: { id_institucion: number };
|
||||
tipoUsuario: { id_tipo_usuario: number };
|
||||
};
|
||||
Modulo?: { id_modulo: number };
|
||||
Modulo: { id_modulo: number };
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ export class CarreraProgramaService {
|
||||
id_programa,
|
||||
);
|
||||
|
||||
// Valido que el admin que esta realizando esta acción le pertenezca la carrera
|
||||
// Validamos que el admin que esta realizando esta acción le pertenezca la carrera
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
institucionCarrera.institucion.id_institucion
|
||||
@ -73,7 +73,7 @@ export class CarreraProgramaService {
|
||||
delete(admin: Operador, id_carrera_programa: number) {
|
||||
return this.findById(id_carrera_programa)
|
||||
.then((carreraPrograma) => {
|
||||
// Valido que la asociación entre una carrera y un programa le
|
||||
// Validamos que la asociación entre una carrera y un programa le
|
||||
// pertenezcan al admin que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
@ -109,7 +109,7 @@ export class CarreraProgramaService {
|
||||
.then(async (institucion) => {
|
||||
// Si es un Operador
|
||||
if (usuarioOperador instanceof Operador) {
|
||||
// Valido que la info le pertenezca al operador que la solicita
|
||||
// Validamos que la info le pertenezca al operador que la solicita
|
||||
if (
|
||||
usuarioOperador.institucion.id_institucion !=
|
||||
institucion.id_institucion
|
||||
|
@ -53,7 +53,7 @@ export class CarritoService {
|
||||
const marca = await this.marcaService.findById(id_marca, 'c');
|
||||
const modelo = await this.modeloService.findById(id_modelo, 'c');
|
||||
|
||||
// Valido que el módulo seleccionado pertenezca a la institutción del admin
|
||||
// Validamos que el módulo seleccionado pertenezca a la institutción del admin
|
||||
if (admin.institucion.id_institucion != modulo.institucion.id_institucion)
|
||||
throw new ForbiddenException(
|
||||
'No puedes crear carritos para este módulo porque no pertenece a tu institución.',
|
||||
@ -219,7 +219,7 @@ export class CarritoService {
|
||||
) {
|
||||
return this.findById(attrs.id_carrito)
|
||||
.then(async (carrito) => {
|
||||
// Valido que el carrito pertenezca a la institución del operador
|
||||
// Validamos que el carrito pertenezca a la institución del operador
|
||||
if (
|
||||
operador.institucion.id_institucion !=
|
||||
carrito.modulo.institucion.id_institucion
|
||||
@ -227,7 +227,7 @@ export class CarritoService {
|
||||
throw new ForbiddenException(
|
||||
'No puedes modificar la información este carrito porque no pertenece a tu institución.',
|
||||
);
|
||||
// Valido que se mande el motivo de desactivación
|
||||
// Validamos que se mande el motivo de desactivación
|
||||
if (attrs.activo === false && !motivo)
|
||||
throw new ForbiddenException(
|
||||
'No se mandó el motivo de desactivación',
|
||||
|
@ -419,7 +419,7 @@ export class EquipoService {
|
||||
? await this.statusService.findById(id_status)
|
||||
: null;
|
||||
|
||||
// Valido que el equipo pertenezca a la institución del operador
|
||||
// Validamos que el equipo pertenezca a la institución del operador
|
||||
// que realiza esta acción
|
||||
if (
|
||||
operador.tipoUsuario.id_tipo_usuario > 2 &&
|
||||
|
@ -29,7 +29,7 @@ export class HoraExcepcionService {
|
||||
id_institucion_dia,
|
||||
);
|
||||
|
||||
// Valido que el id institución día mandado sea de la institución a la que
|
||||
// Validamos que el id institución día mandado sea de la institución a la que
|
||||
// pertenece el operador que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
@ -88,7 +88,7 @@ export class HoraExcepcionService {
|
||||
delete(admin: Operador, id_hora_excepcion: number) {
|
||||
return this.findById(id_hora_excepcion)
|
||||
.then((horaExcepcion) => {
|
||||
// Valido que el id hora excepción pertenezca a la institución del operador
|
||||
// Validamos que el id hora excepción pertenezca a la institución del operador
|
||||
// que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
|
@ -57,7 +57,7 @@ export class InstitucionDiaService {
|
||||
hoy(id_institucion: number) {
|
||||
const ahora = moment();
|
||||
|
||||
// Valido que no sea domingo
|
||||
// Validamos que no sea domingo
|
||||
if (ahora.weekday() === 0)
|
||||
throw new ConflictException('No hay servicio los días domingo.');
|
||||
// Busco un institucionDia apartir de la institución enviada y del día de hoy
|
||||
@ -71,7 +71,7 @@ export class InstitucionDiaService {
|
||||
update(admin: Operador, attrs: Partial<InstitucionDia>) {
|
||||
return this.findById(attrs.id_institucion_dia)
|
||||
.then((institucionDia) => {
|
||||
// Valido que la institucionDia le pertenezca a la institución del
|
||||
// Validamos que la institucionDia le pertenezca a la institución del
|
||||
// operador que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
@ -80,7 +80,7 @@ export class InstitucionDiaService {
|
||||
throw new ConflictException(
|
||||
'No puedes actualizar la información de este día porque no le pertenece a tu institución.',
|
||||
);
|
||||
// Valido que hora_inicio no sea mayor a hora_fin
|
||||
// Validamos que hora_inicio no sea mayor a hora_fin
|
||||
if (
|
||||
// Si se mando hora_inicio u hora_fin
|
||||
(attrs.hora_inicio || attrs.hora_fin) &&
|
||||
@ -92,7 +92,7 @@ export class InstitucionDiaService {
|
||||
throw new BadRequestException(
|
||||
'La hora inicio no puede ser mayor que la hora fin.',
|
||||
);
|
||||
// Valido que hora_fin no sea mayor a hora_extra
|
||||
// Validamos que hora_fin no sea mayor a hora_extra
|
||||
if (
|
||||
// Si se mando hora_fin u hora_extra
|
||||
(attrs.hora_fin || attrs.hora_extra) &&
|
||||
@ -104,7 +104,7 @@ export class InstitucionDiaService {
|
||||
throw new BadRequestException(
|
||||
'La hora fin no puede ser mayor que la hora extra.',
|
||||
);
|
||||
// Valido que hora_extra no sea mayor a hora_tope
|
||||
// Validamos que hora_extra no sea mayor a hora_tope
|
||||
if (
|
||||
// Si se hora_extra hora_fin u hora_tope
|
||||
(attrs.hora_extra || attrs.hora_tope) &&
|
||||
|
@ -105,7 +105,7 @@ export class InstitucionInfraccionService {
|
||||
update(admin: Operador, attrs: Partial<InstitucionInfraccion>) {
|
||||
return this.findById(attrs.id_institucion_infraccion)
|
||||
.then((institucionInfraccion) => {
|
||||
// Valido que la institucionInfraccion le pertenezca al operador que
|
||||
// Validamos que la institucionInfraccion le pertenezca al operador que
|
||||
// realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
|
@ -114,7 +114,7 @@ export class InstitucionProgramaService {
|
||||
update(admin: Operador, attrs: Partial<InstitucionPrograma>) {
|
||||
return this.findById(attrs.id_institucion_programa)
|
||||
.then((institucionPrograma) => {
|
||||
// Valido que la institucionPrograma le pertenezca al operador que
|
||||
// Validamos que la institucionPrograma le pertenezca al operador que
|
||||
// realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
|
@ -120,7 +120,7 @@ export class InstitucionTipoCarritoService {
|
||||
attrs.id_institucion_tipo_carrito,
|
||||
)
|
||||
.then((institucionTipoCarrito) => {
|
||||
// Valido que la institucionTipoCarrito le pertenezca al operador que
|
||||
// Validamos que la institucionTipoCarrito le pertenezca al operador que
|
||||
// realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
|
@ -110,7 +110,7 @@ export class InstitucionTipoEntradaService {
|
||||
update(admin: Operador, attrs: Partial<InstitucionTipoEntrada>) {
|
||||
return this.findById(attrs.id_institucion_tipo_entrada)
|
||||
.then((institucionTipoEntrada) => {
|
||||
// Valido que la institucionTipoEntrada le pertenezca al operador que
|
||||
// Validamos que la institucionTipoEntrada le pertenezca al operador que
|
||||
// realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion !=
|
||||
|
@ -144,7 +144,7 @@ export class ModuloService {
|
||||
throw new ConflictException('No se mandó toda la información necesaria.');
|
||||
return this.findById(attrs.id_modulo)
|
||||
.then(async (modulo) => {
|
||||
// Valido que el modulo enviado sea del admin que realiza esta acción
|
||||
// Validamos que el modulo enviado sea del admin que realiza esta acción
|
||||
if (
|
||||
admin.institucion.id_institucion != modulo.institucion.id_institucion
|
||||
)
|
||||
|
@ -106,7 +106,7 @@ export class MultaService {
|
||||
);
|
||||
const fecha_fin = moment();
|
||||
|
||||
// Valido que este prestamo le pertenezca al operador
|
||||
// Validamos que este prestamo le pertenezca al operador
|
||||
if (
|
||||
operador.institucion.id_institucion !=
|
||||
prestamo.equipo.carrito.modulo.institucion.id_institucion
|
||||
@ -314,7 +314,7 @@ export class MultaService {
|
||||
}
|
||||
|
||||
private validacionMultaCancelacion(prestamo: Prestamo) {
|
||||
// Valido que este prestamo no haya sido cancelado poer el usuario u operador
|
||||
// Validamos que este prestamo no haya sido cancelado poer el usuario u operador
|
||||
if (prestamo.cancelado_operador || prestamo.cancelado_usuario)
|
||||
throw new ConflictException(
|
||||
'No se puede multar a un usuario con un préstamo que fue cancelado.',
|
||||
|
@ -188,7 +188,7 @@ export class OperadorService {
|
||||
id_institucion: true,
|
||||
id_tipo_usuario: true,
|
||||
},
|
||||
where: { operador, institucion },
|
||||
where: { operador, institucion, tipoUsuario: { id_tipo_usuario: 4 } },
|
||||
})
|
||||
.then((operador) => this.llenarIds(operador));
|
||||
}
|
||||
@ -273,7 +273,7 @@ export class OperadorService {
|
||||
}
|
||||
|
||||
validarUpdate(admin: Operador, operador: Operador) {
|
||||
// Valido que el super admin solo puedar modificar admins
|
||||
// Validamos que el super admin solo puedar modificar admins
|
||||
if (
|
||||
admin.tipoUsuario.id_tipo_usuario === 2 &&
|
||||
operador.tipoUsuario.id_tipo_usuario != 3
|
||||
@ -282,12 +282,12 @@ export class OperadorService {
|
||||
`El super admin solo puede modificar la infomración de los admins.`,
|
||||
);
|
||||
if (admin.tipoUsuario.id_tipo_usuario === 3) {
|
||||
// Valido que el admin no pueda modificar otro admin
|
||||
// Validamos que el admin no pueda modificar otro admin
|
||||
if (operador.tipoUsuario.id_tipo_usuario === 3)
|
||||
throw new ConflictException(
|
||||
`No puedes actualizar la información de otro admin.`,
|
||||
);
|
||||
// Valido que el admin solo pueda modificar operadores de su institución
|
||||
// Validamos que el admin solo pueda modificar operadores de su institución
|
||||
if (
|
||||
admin.institucion.id_institucion != operador.institucion.id_institucion
|
||||
)
|
||||
|
@ -169,10 +169,10 @@ export class PrestamoService {
|
||||
)
|
||||
: null;
|
||||
|
||||
// Valido que no sea domingo
|
||||
// Validamos que no sea domingo
|
||||
if (ahora.weekday() === 0)
|
||||
throw new ConflictException('No hay servicio los días domingo.');
|
||||
// Valido si ese día se encuentra activo
|
||||
// Validamos si ese día se encuentra activo
|
||||
if (!institucionDia.activo)
|
||||
throw new ConflictException(
|
||||
'El día de hoy no hay servicio de préstamo de equipos.',
|
||||
@ -946,17 +946,17 @@ export class PrestamoService {
|
||||
}
|
||||
|
||||
validacionBasicaPrestamo(prestamo: Prestamo) {
|
||||
// Valido si el préstamo fue cancelado por el usuario
|
||||
// Validamos si el préstamo fue cancelado por el usuario
|
||||
if (prestamo.cancelado_usuario)
|
||||
throw new ConflictException(
|
||||
'Este préstamo fue cancelado por el usuario.',
|
||||
);
|
||||
// Valido si el préstamo fue cancelado por el operador
|
||||
// Validamos si el préstamo fue cancelado por el operador
|
||||
if (prestamo.cancelado_operador)
|
||||
throw new ConflictException(
|
||||
'Este préstamo fue cancelado por un operador.',
|
||||
);
|
||||
// Valido si el préstamo esta inactivo
|
||||
// Validamos si el préstamo esta inactivo
|
||||
if (!prestamo.activo)
|
||||
throw new ConflictException('Este préstamo ya no se encuentra activo.');
|
||||
}
|
||||
@ -990,7 +990,7 @@ export class PrestamoService {
|
||||
operador: Operador,
|
||||
modulo: Modulo,
|
||||
) {
|
||||
// Valido que el prestamo pertenezca a la institución
|
||||
// Validamos que el prestamo pertenezca a la institución
|
||||
if (
|
||||
operador.institucion.id_institucion !=
|
||||
prestamo.equipo.carrito.modulo.institucion.id_institucion
|
||||
@ -998,7 +998,7 @@ export class PrestamoService {
|
||||
throw new ConflictException(
|
||||
'Este préstamo no pertenece a esta institución.',
|
||||
);
|
||||
// Valido que el prestamo pertenezca al módulo del operador
|
||||
// Validamos que el prestamo pertenezca al módulo del operador
|
||||
if (modulo && prestamo.equipo.carrito.modulo.id_modulo != modulo.id_modulo)
|
||||
throw new ConflictException('Este préstamo no pertenece a tu módulo.');
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user