From 59546368a99da3f539c7fc134de60d77048e9013 Mon Sep 17 00:00:00 2001 From: xXpuma99Xx <51341582+xXpuma99Xx@users.noreply.github.com> Date: Sun, 31 Jul 2022 22:18:45 -0500 Subject: [PATCH] institucion dia endpoints restringidos a usuario --- .../institucion-dia.controller.ts | 28 ++++++++++++++++--- .../institucion-dia.service.ts | 22 +++++++++++++-- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/src/institucion-dia/institucion-dia.controller.ts b/src/institucion-dia/institucion-dia.controller.ts index 2f688f2..652111c 100644 --- a/src/institucion-dia/institucion-dia.controller.ts +++ b/src/institucion-dia/institucion-dia.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 { InstitucionDiaService } from './institucion-dia.service'; +import { Operador } from 'src/operador/entity/operador.entity'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { UpdateInstitucionDiaDto } from './dto/input/update.dto'; import { InstitucionCarreaOutputDto } from './dto/output/institucion-carrera.dto'; @@ -30,7 +40,13 @@ export class InstitucionDiaController { name: 'id_institucion', type: 'string', }) - dias(@Query() query: IdInstitucionDto) { + dias(@Request() req, @Query() query: IdInstitucionDto) { + const admin: Operador = req.user.operador; + + if (admin.tipoUsuario.id_tipo_usuario != 3) + throw new ConflictException( + 'No tienes permiso de acceder a esta información.', + ); return this.institucionDiaService.findAllByIdInstitucion( parseInt(query.id_institucion), ); @@ -74,7 +90,11 @@ export class InstitucionDiaController { }, }, }) - update(@Body() body: UpdateInstitucionDiaDto) { - return this.institucionDiaService.update(body); + update(@Request() req, @Body() body: UpdateInstitucionDiaDto) { + const admin: Operador = req.user.operador; + + if (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-dia/institucion-dia.service.ts b/src/institucion-dia/institucion-dia.service.ts index 4c8356c..46805f3 100644 --- a/src/institucion-dia/institucion-dia.service.ts +++ b/src/institucion-dia/institucion-dia.service.ts @@ -8,6 +8,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Institucion } from '../institucion/entity/institucion.entity'; import { InstitucionDia } from './entity/institucion-dia.entity'; +import { Operador } from 'src/operador/entity/operador.entity'; import { InstitucionService } from '../institucion/institucion.service'; @Injectable() @@ -28,7 +29,17 @@ export class InstitucionDiaService { findById(id_institucion_dia: number) { return this.repository - .findOne({ id_institucion_dia }) + .findOne({ + join: { + alias: 'id', + innerJoinAndSelect: { + d: 'id.dia', + i: 'id.institucion', + he: 'id.horasExcepcion', + }, + }, + where: { id_institucion_dia }, + }) .then((institucionDia) => { if (!institucionDia) throw new NotFoundException('No existe este id institución día.'); @@ -54,9 +65,16 @@ export class InstitucionDiaService { ); } - update(attrs: Partial) { + update(admin: Operador, attrs: Partial) { return this.findById(attrs.id_institucion_dia) .then((institucionDia) => { + if ( + admin.institucion.id_institucion != + institucionDia.institucion.id_institucion + ) + throw new ConflictException( + 'No puedes actualizar la información de este día porque no le corresponde a tu institución.', + ); Object.assign(institucionDia, attrs); return this.repository.save(institucionDia); })