From 20d8081c8495b4f4f5d07b1af32ea9c6b04f40e8 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Mon, 1 Aug 2022 01:30:41 -0500 Subject: [PATCH] institucion endpoints restringidos a usuario --- .../carrera-programa.controller.ts | 4 +- .../hora-excepcion.controller.ts | 6 +- .../institucion-dia.controller.ts | 2 +- .../institucion-infraccion.controller.ts | 4 +- .../institucion-programa.controller.ts | 4 +- .../institucion-tipo-carrito.controller.ts | 4 +- .../institucion-tipo-entrada.controller.ts | 4 +- src/institucion/institucion.controller.ts | 68 +++++++++++++------ src/institucion/institucion.service.ts | 16 ++++- src/upload-file/upload-file.service.ts | 6 +- 10 files changed, 79 insertions(+), 39 deletions(-) diff --git a/src/carrera-programa/carrera-programa.controller.ts b/src/carrera-programa/carrera-programa.controller.ts index 1e18f80..43f8f32 100644 --- a/src/carrera-programa/carrera-programa.controller.ts +++ b/src/carrera-programa/carrera-programa.controller.ts @@ -46,7 +46,7 @@ export class CarreraProgramaController { create(@Request() req, @Body() body: CreateCarreraProgramaDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.carreraProgramaService.create( admin, @@ -69,7 +69,7 @@ export class CarreraProgramaController { delete(@Request() req, @Body() body: DeleteCarreraProgramaDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.carreraProgramaService.delete(admin, body.id_carrera_programa); } diff --git a/src/hora-excepcion/hora-excepcion.controller.ts b/src/hora-excepcion/hora-excepcion.controller.ts index df59da0..96a768c 100644 --- a/src/hora-excepcion/hora-excepcion.controller.ts +++ b/src/hora-excepcion/hora-excepcion.controller.ts @@ -53,7 +53,7 @@ export class HoraExcepcionController { create(@Request() req, @Body() body: CreateHoraExcepcionDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.horaExcepcionService.create( admin, @@ -76,7 +76,7 @@ export class HoraExcepcionController { delete(@Request() req, @Body() body: DeleteHoraExcepcionDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.horaExcepcionService.delete(admin, body.id_hora_excepcion); } @@ -118,7 +118,7 @@ export class HoraExcepcionController { update(@Request() req, @Body() body: UpdateHoraExcepcionDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.horaExcepcionService.update(admin, body); } diff --git a/src/institucion-dia/institucion-dia.controller.ts b/src/institucion-dia/institucion-dia.controller.ts index 0612a61..cfd9267 100644 --- a/src/institucion-dia/institucion-dia.controller.ts +++ b/src/institucion-dia/institucion-dia.controller.ts @@ -87,7 +87,7 @@ export class InstitucionDiaController { update(@Request() req, @Body() body: UpdateInstitucionDiaDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionDiaService.update(admin, body); } diff --git a/src/institucion-infraccion/institucion-infraccion.controller.ts b/src/institucion-infraccion/institucion-infraccion.controller.ts index 9e4ac08..1e62ba3 100644 --- a/src/institucion-infraccion/institucion-infraccion.controller.ts +++ b/src/institucion-infraccion/institucion-infraccion.controller.ts @@ -44,7 +44,7 @@ export class InstitucionInfraccionController { create(@Request() req, @Body() body: CreateInstitucionInfraccionDto) { const superAdmin: Operador = req.user.operador; - if (superAdmin.tipoUsuario.id_tipo_usuario != 2) + if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionInfraccionService.create(body.infraccion); } @@ -91,7 +91,7 @@ export class InstitucionInfraccionController { update(@Request() req, @Body() body: UpdateInstitucionInfraccionDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionInfraccionService.update(admin, body); } diff --git a/src/institucion-programa/institucion-programa.controller.ts b/src/institucion-programa/institucion-programa.controller.ts index e1cf933..36676b7 100644 --- a/src/institucion-programa/institucion-programa.controller.ts +++ b/src/institucion-programa/institucion-programa.controller.ts @@ -43,7 +43,7 @@ export class InstitucionProgramaController { create(@Request() req, @Body() body: CreateProgramaDto) { const superAdmin: Operador = req.user.operador; - if (superAdmin.tipoUsuario.id_tipo_usuario != 2) + if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionProgramaService.create(body.programa); } @@ -111,7 +111,7 @@ export class InstitucionProgramaController { update(@Request() req, @Body() body: UpdateProgramaDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionProgramaService.update(admin, body); } diff --git a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts index 3f8164a..b80c01c 100644 --- a/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts +++ b/src/institucion-tipo-carrito/institucion-tipo-carrito.controller.ts @@ -45,7 +45,7 @@ export class InstitucionTipoCarritoController { create(@Request() req, @Body() body: CreateInstitucionTipoCarritoDto) { const superAdmin: Operador = req.user.operador; - if (superAdmin.tipoUsuario.id_tipo_usuario != 2) + if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionTipoCarritoService.create( body.letra, @@ -119,7 +119,7 @@ export class InstitucionTipoCarritoController { update(@Request() req, @Body() body: UpdateInstitucionTipoCarritoDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.institucionTipoCarritoService.update(admin, body); } diff --git a/src/institucion-tipo-entrada/institucion-tipo-entrada.controller.ts b/src/institucion-tipo-entrada/institucion-tipo-entrada.controller.ts index 6935729..da82ba8 100644 --- a/src/institucion-tipo-entrada/institucion-tipo-entrada.controller.ts +++ b/src/institucion-tipo-entrada/institucion-tipo-entrada.controller.ts @@ -43,7 +43,7 @@ export class InstitucionTipoEntradaController { create(@Request() req, @Body() body: CreateInstitucionTipoEntradaDto) { const superAdmin: Operador = req.user.operador; - if (superAdmin.tipoUsuario.id_tipo_usuario != 2) + if (!superAdmin || superAdmin.tipoUsuario.id_tipo_usuario != 2) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.tipoEntradaService.create(body.tipo_entrada); } @@ -114,7 +114,7 @@ export class InstitucionTipoEntradaController { update(@Request() req, @Body() body: UpdateInstitucionTipoEntradaDto) { const admin: Operador = req.user.operador; - if (admin.tipoUsuario.id_tipo_usuario != 3) + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) throw new ConflictException('No tienes permiso de realizar esta acción.'); return this.tipoEntradaService.update(admin, body); } diff --git a/src/institucion/institucion.controller.ts b/src/institucion/institucion.controller.ts index f31c39c..67d8391 100644 --- a/src/institucion/institucion.controller.ts +++ b/src/institucion/institucion.controller.ts @@ -1,4 +1,13 @@ -import { Body, Controller, Get, Put, Query, UseGuards } from '@nestjs/common'; +import { + Body, + ConflictException, + Controller, + Get, + Put, + Query, + Request, + UseGuards, +} from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; import { ApiBearerAuth, @@ -9,6 +18,7 @@ import { } from '@nestjs/swagger'; import { Serealize } from '../interceptors/serialize.interceptor'; import { InstitucionService } from './institucion.service'; +import { Operador } from 'src/operador/entity/operador.entity'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { UpdateInstitucionDto } from './dto/input/update.dto'; import { InstitucionOutputDto } from './dto/output/institucion.dto'; @@ -21,6 +31,15 @@ import { InstitucionesMinOutputDto } from './dto/output/instituciones-min.dto'; export class InstitucionController { constructor(private institucionService: InstitucionService) {} + @Serealize(InstitucionesMinOutputDto) + @Get('instituciones-activas') + @ApiOperation({ + description: 'Endpoint que retorna todas las instituciones activas.', + }) + activas() { + return this.institucionService.findAll(true); + } + @Serealize(InstitucionMinOutputDto) @Get() @UseGuards(AuthGuard('jwt')) @@ -32,17 +51,6 @@ export class InstitucionController { return this.institucionService.findAll(); } - @Serealize(InstitucionesOutputDto) - @Get('instituciones') - @UseGuards(AuthGuard('jwt')) - @ApiOperation({ - description: 'Endpoint que retorna todas las instituciones.', - }) - @ApiBearerAuth('jwt') - instituciones() { - return this.institucionService.findAll(); - } - @Serealize(InstitucionOutputDto) @Get('institucion') @UseGuards(AuthGuard('jwt')) @@ -55,17 +63,29 @@ export class InstitucionController { name: 'id_institucion', type: 'string', }) - institucion(@Query() query: IdInstitucionDto) { + institucion(@Request() req, @Query() query: IdInstitucionDto) { + const admin: Operador = req.user.operador; + + if ( + !admin || + (admin.tipoUsuario.id_tipo_usuario != 2 && + admin.tipoUsuario.id_tipo_usuario != 3) + ) + throw new ConflictException( + 'No tienes permiso para acceder a esta información.', + ); return this.institucionService.findById(parseInt(query.id_institucion)); } - @Serealize(InstitucionesMinOutputDto) - @Get('activas') + @Serealize(InstitucionesOutputDto) + @Get('instituciones') + @UseGuards(AuthGuard('jwt')) @ApiOperation({ - description: 'Endpoint que retorna todas las instituciones activas.', + description: 'Endpoint que retorna todas las instituciones.', }) - activas() { - return this.institucionService.findAll(true); + @ApiBearerAuth('jwt') + instituciones() { + return this.institucionService.findAll(); } @Put() @@ -95,7 +115,15 @@ export class InstitucionController { }, }, }) - update(@Body() body: UpdateInstitucionDto) { - return this.institucionService.update(body); + update(@Request() req, @Body() body: UpdateInstitucionDto) { + const admin: Operador = req.user.operador; + + if ( + !admin || + (admin.tipoUsuario.id_tipo_usuario != 2 && + admin.tipoUsuario.id_tipo_usuario != 3) + ) + throw new ConflictException('No tienes permiso de realizar esta acción.'); + return this.institucionService.update(admin, body); } } diff --git a/src/institucion/institucion.service.ts b/src/institucion/institucion.service.ts index 3c51ab1..8aecaf8 100644 --- a/src/institucion/institucion.service.ts +++ b/src/institucion/institucion.service.ts @@ -1,7 +1,12 @@ -import { Injectable, NotFoundException } from '@nestjs/common'; +import { + ConflictException, + Injectable, + NotFoundException, +} from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Institucion } from './entity/institucion.entity'; +import { Operador } from 'src/operador/entity/operador.entity'; @Injectable() export class InstitucionService { @@ -27,9 +32,16 @@ export class InstitucionService { }); } - update(attrs: Partial) { + update(admin: Operador, attrs: Partial) { return this.findById(attrs.id_institucion) .then((institucion) => { + if ( + admin.tipoUsuario.id_tipo_usuario === 3 && + admin.institucion.id_institucion != institucion.id_institucion + ) + throw new ConflictException( + 'No puedes actualizar la información de esta institución porque no correspondes a ella.', + ); Object.assign(institucion, attrs); return this.repository.save(institucion); }) diff --git a/src/upload-file/upload-file.service.ts b/src/upload-file/upload-file.service.ts index be14207..3b8b859 100644 --- a/src/upload-file/upload-file.service.ts +++ b/src/upload-file/upload-file.service.ts @@ -397,8 +397,8 @@ export class UploadFileService { if (!file) throw new BadRequestException('No se mandó ningún logo.'); institucion.logo = path; - return this.institucionService - .update(institucion) - .then((_) => ({ message: 'Se subió correctamente el logo.' })); + // return this.institucionService + // .update(institucion) + // .then((_) => ({ message: 'Se subió correctamente el logo.' })); } }