auth service final

This commit is contained in:
xXpuma99Xx 2022-12-19 11:29:36 -06:00
parent 53ef5893c6
commit f893493b80
15 changed files with 54 additions and 53 deletions

View File

@ -24,12 +24,12 @@ export class AuthService {
private usuarioService: UsuarioService, private usuarioService: UsuarioService,
) {} ) {}
loginAdmin(admin: string, password: string) { loginAdmin(admin: string, password: string): Promise<{ token: string }> {
return this.operadorService.findAdmin(admin).then((admin) => { return this.operadorService.findAdmin(admin).then((admin) => {
this.validacionBasica(admin, password); this.validacionBasica(admin, password);
this.validacionOperador(admin); 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 = { const JwtPayload: JwtPayloadAdmin = {
Operador: { Operador: {
id_operador: admin.id_operador, id_operador: admin.id_operador,
@ -44,12 +44,15 @@ export class AuthService {
JwtPayload.Operador.institucion = { JwtPayload.Operador.institucion = {
id_institucion: admin.institucion.id_institucion, id_institucion: admin.institucion.id_institucion,
}; };
// "Firmo"/creo el token return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
return { token: this.jwtService.sign(JwtPayload) };
}); });
} }
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); const modulo = await this.moduloService.findById(id_modulo);
return this.operadorService return this.operadorService
@ -58,7 +61,7 @@ export class AuthService {
this.validacionBasica(operador, password); this.validacionBasica(operador, password);
this.validacionOperador(operador); 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 = { const JwtPayload: JwtPayloadOperador = {
Operador: { Operador: {
id_operador: operador.id_operador, id_operador: operador.id_operador,
@ -71,23 +74,20 @@ export class AuthService {
id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario, id_tipo_usuario: operador.tipoUsuario.id_tipo_usuario,
}, },
}, },
Modulo: { id_modulo: modulo.id_modulo },
}; };
return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
if (operador.tipoUsuario.id_tipo_usuario === 4)
JwtPayload.Modulo = { id_modulo: modulo.id_modulo };
// "Firmo"/creo el token
return { token: this.jwtService.sign(JwtPayload) };
}); });
} }
loginUsuario(usuario: string, password: string) { loginUsuario(usuario: string, password: string): Promise<{ token: string }> {
return this.usuarioService.findByUsuario(usuario).then((usuario) => { 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) if (usuario && !usuario.password)
throw new BadRequestException('Este usuario no ha sido registrado.'); throw new BadRequestException('Este usuario no ha sido registrado.');
this.validacionBasica(usuario, password); 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 = { const JwtPayload: JwtPayloadUsuario = {
Usuario: { Usuario: {
id_usuario: usuario.id_usuario, id_usuario: usuario.id_usuario,
@ -99,16 +99,15 @@ export class AuthService {
}, },
}; };
// "Firmo"/creo el token return { token: this.jwtService.sign(JwtPayload) }; // "Firmamos"/creamos el token
return { token: this.jwtService.sign(JwtPayload) };
}); });
} }
private validacionBasica( private validacionBasica(
operadorUsuario: Operador | Usuario, operadorUsuario: Operador | Usuario,
password: string, password: string,
) { ): void {
// Valido que el operador o usuario existan y que el password sea el correcto // Validamos que el operador o usuario existan y que el password que se envió coincida con el de la db
if ( if (
!operadorUsuario || !operadorUsuario ||
!this.bcryptService.comparar(password, operadorUsuario.password) !this.bcryptService.comparar(password, operadorUsuario.password)
@ -116,11 +115,13 @@ export class AuthService {
throw new BadRequestException( throw new BadRequestException(
'Usuario y/o password incorrectos, ingresa unas credenciales válidas.', 'Usuario y/o password incorrectos, ingresa unas credenciales válidas.',
); );
return;
} }
private validacionOperador(operador: Operador) { private validacionOperador(operador: Operador): void {
// Valido que el operador este activo // Validamos que la cuenta del operador esta activa
if (!operador.activo) if (!operador.activo)
throw new UnauthorizedException('Esta cuenta se encuentra desactivada.'); throw new UnauthorizedException('Esta cuenta se encuentra desactivada.');
return;
} }
} }

View File

@ -6,5 +6,5 @@ export interface JwtPayloadOperador {
institucion: { id_institucion: number }; institucion: { id_institucion: number };
tipoUsuario: { id_tipo_usuario: number }; tipoUsuario: { id_tipo_usuario: number };
}; };
Modulo?: { id_modulo: number }; Modulo: { id_modulo: number };
} }

View File

@ -37,7 +37,7 @@ export class CarreraProgramaService {
id_programa, 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 ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=
institucionCarrera.institucion.id_institucion institucionCarrera.institucion.id_institucion
@ -73,7 +73,7 @@ export class CarreraProgramaService {
delete(admin: Operador, id_carrera_programa: number) { delete(admin: Operador, id_carrera_programa: number) {
return this.findById(id_carrera_programa) return this.findById(id_carrera_programa)
.then((carreraPrograma) => { .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 // pertenezcan al admin que realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=
@ -109,7 +109,7 @@ export class CarreraProgramaService {
.then(async (institucion) => { .then(async (institucion) => {
// Si es un Operador // Si es un Operador
if (usuarioOperador instanceof 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 ( if (
usuarioOperador.institucion.id_institucion != usuarioOperador.institucion.id_institucion !=
institucion.id_institucion institucion.id_institucion

View File

@ -53,7 +53,7 @@ export class CarritoService {
const marca = await this.marcaService.findById(id_marca, 'c'); const marca = await this.marcaService.findById(id_marca, 'c');
const modelo = await this.modeloService.findById(id_modelo, '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) if (admin.institucion.id_institucion != modulo.institucion.id_institucion)
throw new ForbiddenException( throw new ForbiddenException(
'No puedes crear carritos para este módulo porque no pertenece a tu institución.', '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) return this.findById(attrs.id_carrito)
.then(async (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 ( if (
operador.institucion.id_institucion != operador.institucion.id_institucion !=
carrito.modulo.institucion.id_institucion carrito.modulo.institucion.id_institucion
@ -227,7 +227,7 @@ export class CarritoService {
throw new ForbiddenException( throw new ForbiddenException(
'No puedes modificar la información este carrito porque no pertenece a tu institución.', '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) if (attrs.activo === false && !motivo)
throw new ForbiddenException( throw new ForbiddenException(
'No se mandó el motivo de desactivación', 'No se mandó el motivo de desactivación',

View File

@ -419,7 +419,7 @@ export class EquipoService {
? await this.statusService.findById(id_status) ? await this.statusService.findById(id_status)
: null; : 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 // que realiza esta acción
if ( if (
operador.tipoUsuario.id_tipo_usuario > 2 && operador.tipoUsuario.id_tipo_usuario > 2 &&

View File

@ -29,7 +29,7 @@ export class HoraExcepcionService {
id_institucion_dia, 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 // pertenece el operador que realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=
@ -88,7 +88,7 @@ export class HoraExcepcionService {
delete(admin: Operador, id_hora_excepcion: number) { delete(admin: Operador, id_hora_excepcion: number) {
return this.findById(id_hora_excepcion) return this.findById(id_hora_excepcion)
.then((horaExcepcion) => { .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 // que realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=

View File

@ -57,7 +57,7 @@ export class InstitucionDiaService {
hoy(id_institucion: number) { hoy(id_institucion: number) {
const ahora = moment(); const ahora = moment();
// Valido que no sea domingo // Validamos que no sea domingo
if (ahora.weekday() === 0) if (ahora.weekday() === 0)
throw new ConflictException('No hay servicio los días domingo.'); 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 // 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>) { update(admin: Operador, attrs: Partial<InstitucionDia>) {
return this.findById(attrs.id_institucion_dia) return this.findById(attrs.id_institucion_dia)
.then((institucionDia) => { .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 // operador que realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=
@ -80,7 +80,7 @@ export class InstitucionDiaService {
throw new ConflictException( throw new ConflictException(
'No puedes actualizar la información de este día porque no le pertenece a tu institución.', '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 ( if (
// Si se mando hora_inicio u hora_fin // Si se mando hora_inicio u hora_fin
(attrs.hora_inicio || attrs.hora_fin) && (attrs.hora_inicio || attrs.hora_fin) &&
@ -92,7 +92,7 @@ export class InstitucionDiaService {
throw new BadRequestException( throw new BadRequestException(
'La hora inicio no puede ser mayor que la hora fin.', '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 ( if (
// Si se mando hora_fin u hora_extra // Si se mando hora_fin u hora_extra
(attrs.hora_fin || attrs.hora_extra) && (attrs.hora_fin || attrs.hora_extra) &&
@ -104,7 +104,7 @@ export class InstitucionDiaService {
throw new BadRequestException( throw new BadRequestException(
'La hora fin no puede ser mayor que la hora extra.', '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 ( if (
// Si se hora_extra hora_fin u hora_tope // Si se hora_extra hora_fin u hora_tope
(attrs.hora_extra || attrs.hora_tope) && (attrs.hora_extra || attrs.hora_tope) &&

View File

@ -105,7 +105,7 @@ export class InstitucionInfraccionService {
update(admin: Operador, attrs: Partial<InstitucionInfraccion>) { update(admin: Operador, attrs: Partial<InstitucionInfraccion>) {
return this.findById(attrs.id_institucion_infraccion) return this.findById(attrs.id_institucion_infraccion)
.then((institucionInfraccion) => { .then((institucionInfraccion) => {
// Valido que la institucionInfraccion le pertenezca al operador que // Validamos que la institucionInfraccion le pertenezca al operador que
// realiza esta acción // realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=

View File

@ -114,7 +114,7 @@ export class InstitucionProgramaService {
update(admin: Operador, attrs: Partial<InstitucionPrograma>) { update(admin: Operador, attrs: Partial<InstitucionPrograma>) {
return this.findById(attrs.id_institucion_programa) return this.findById(attrs.id_institucion_programa)
.then((institucionPrograma) => { .then((institucionPrograma) => {
// Valido que la institucionPrograma le pertenezca al operador que // Validamos que la institucionPrograma le pertenezca al operador que
// realiza esta acción // realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=

View File

@ -120,7 +120,7 @@ export class InstitucionTipoCarritoService {
attrs.id_institucion_tipo_carrito, attrs.id_institucion_tipo_carrito,
) )
.then((institucionTipoCarrito) => { .then((institucionTipoCarrito) => {
// Valido que la institucionTipoCarrito le pertenezca al operador que // Validamos que la institucionTipoCarrito le pertenezca al operador que
// realiza esta acción // realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=

View File

@ -110,7 +110,7 @@ export class InstitucionTipoEntradaService {
update(admin: Operador, attrs: Partial<InstitucionTipoEntrada>) { update(admin: Operador, attrs: Partial<InstitucionTipoEntrada>) {
return this.findById(attrs.id_institucion_tipo_entrada) return this.findById(attrs.id_institucion_tipo_entrada)
.then((institucionTipoEntrada) => { .then((institucionTipoEntrada) => {
// Valido que la institucionTipoEntrada le pertenezca al operador que // Validamos que la institucionTipoEntrada le pertenezca al operador que
// realiza esta acción // realiza esta acción
if ( if (
admin.institucion.id_institucion != admin.institucion.id_institucion !=

View File

@ -144,7 +144,7 @@ export class ModuloService {
throw new ConflictException('No se mandó toda la información necesaria.'); throw new ConflictException('No se mandó toda la información necesaria.');
return this.findById(attrs.id_modulo) return this.findById(attrs.id_modulo)
.then(async (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 ( if (
admin.institucion.id_institucion != modulo.institucion.id_institucion admin.institucion.id_institucion != modulo.institucion.id_institucion
) )

View File

@ -106,7 +106,7 @@ export class MultaService {
); );
const fecha_fin = moment(); const fecha_fin = moment();
// Valido que este prestamo le pertenezca al operador // Validamos que este prestamo le pertenezca al operador
if ( if (
operador.institucion.id_institucion != operador.institucion.id_institucion !=
prestamo.equipo.carrito.modulo.institucion.id_institucion prestamo.equipo.carrito.modulo.institucion.id_institucion
@ -314,7 +314,7 @@ export class MultaService {
} }
private validacionMultaCancelacion(prestamo: Prestamo) { 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) if (prestamo.cancelado_operador || prestamo.cancelado_usuario)
throw new ConflictException( throw new ConflictException(
'No se puede multar a un usuario con un préstamo que fue cancelado.', 'No se puede multar a un usuario con un préstamo que fue cancelado.',

View File

@ -188,7 +188,7 @@ export class OperadorService {
id_institucion: true, id_institucion: true,
id_tipo_usuario: true, id_tipo_usuario: true,
}, },
where: { operador, institucion }, where: { operador, institucion, tipoUsuario: { id_tipo_usuario: 4 } },
}) })
.then((operador) => this.llenarIds(operador)); .then((operador) => this.llenarIds(operador));
} }
@ -273,7 +273,7 @@ export class OperadorService {
} }
validarUpdate(admin: Operador, operador: Operador) { validarUpdate(admin: Operador, operador: Operador) {
// Valido que el super admin solo puedar modificar admins // Validamos que el super admin solo puedar modificar admins
if ( if (
admin.tipoUsuario.id_tipo_usuario === 2 && admin.tipoUsuario.id_tipo_usuario === 2 &&
operador.tipoUsuario.id_tipo_usuario != 3 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.`, `El super admin solo puede modificar la infomración de los admins.`,
); );
if (admin.tipoUsuario.id_tipo_usuario === 3) { 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) if (operador.tipoUsuario.id_tipo_usuario === 3)
throw new ConflictException( throw new ConflictException(
`No puedes actualizar la información de otro admin.`, `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 ( if (
admin.institucion.id_institucion != operador.institucion.id_institucion admin.institucion.id_institucion != operador.institucion.id_institucion
) )

View File

@ -169,10 +169,10 @@ export class PrestamoService {
) )
: null; : null;
// Valido que no sea domingo // Validamos que no sea domingo
if (ahora.weekday() === 0) if (ahora.weekday() === 0)
throw new ConflictException('No hay servicio los días domingo.'); 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) if (!institucionDia.activo)
throw new ConflictException( throw new ConflictException(
'El día de hoy no hay servicio de préstamo de equipos.', 'El día de hoy no hay servicio de préstamo de equipos.',
@ -946,17 +946,17 @@ export class PrestamoService {
} }
validacionBasicaPrestamo(prestamo: Prestamo) { 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) if (prestamo.cancelado_usuario)
throw new ConflictException( throw new ConflictException(
'Este préstamo fue cancelado por el usuario.', '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) if (prestamo.cancelado_operador)
throw new ConflictException( throw new ConflictException(
'Este préstamo fue cancelado por un operador.', '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) if (!prestamo.activo)
throw new ConflictException('Este préstamo ya no se encuentra activo.'); throw new ConflictException('Este préstamo ya no se encuentra activo.');
} }
@ -990,7 +990,7 @@ export class PrestamoService {
operador: Operador, operador: Operador,
modulo: Modulo, modulo: Modulo,
) { ) {
// Valido que el prestamo pertenezca a la institución // Validamos que el prestamo pertenezca a la institución
if ( if (
operador.institucion.id_institucion != operador.institucion.id_institucion !=
prestamo.equipo.carrito.modulo.institucion.id_institucion prestamo.equipo.carrito.modulo.institucion.id_institucion
@ -998,7 +998,7 @@ export class PrestamoService {
throw new ConflictException( throw new ConflictException(
'Este préstamo no pertenece a esta institución.', '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) if (modulo && prestamo.equipo.carrito.modulo.id_modulo != modulo.id_modulo)
throw new ConflictException('Este préstamo no pertenece a tu módulo.'); throw new ConflictException('Este préstamo no pertenece a tu módulo.');
} }