institucion dia endpoints restringidos a usuario

This commit is contained in:
xXpuma99Xx
2022-07-31 22:18:45 -05:00
parent 10ed8995e9
commit 59546368a9
2 changed files with 44 additions and 6 deletions
@@ -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);
}
}
+20 -2
View File
@@ -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<InstitucionDia>) {
update(admin: Operador, attrs: Partial<InstitucionDia>) {
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);
})