diff --git a/src/marca/marca.controller.ts b/src/marca/marca.controller.ts index 7597075..1df2094 100644 --- a/src/marca/marca.controller.ts +++ b/src/marca/marca.controller.ts @@ -28,20 +28,6 @@ import { MarcaOutputDto } from './dto/output/marca.dto'; export class MarcaController { constructor(private marcaService: MarcaService) {} - @Serealize(MarcaOutputDto) - @Get() - @UseGuards(AuthGuard('jwt')) - @ApiOperation({ description: 'Endpoint que retorna todass las marcas.' }) - @ApiBearerAuth('jwt') - @ApiQuery({ - description: 'Tipo de marca que se busca.', - name: 'tipo', - type: 'text', - }) - get(@Query() query: MarcaDto) { - return this.marcaService.findAll(query.tipo); - } - @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea una nueva marca.' }) @@ -59,4 +45,18 @@ export class MarcaController { ); return this.marcaService.create(body.marca, body.tipo); } + + @Serealize(MarcaOutputDto) + @Get() + @UseGuards(AuthGuard('jwt')) + @ApiOperation({ description: 'Endpoint que retorna todass las marcas.' }) + @ApiBearerAuth('jwt') + @ApiQuery({ + description: 'Tipo de marca que se busca.', + name: 'tipo', + type: 'text', + }) + get(@Query() query: MarcaDto) { + return this.marcaService.findAll(query.tipo); + } } diff --git a/src/modelo/modelo.controller.ts b/src/modelo/modelo.controller.ts index 373cee6..164e20e 100644 --- a/src/modelo/modelo.controller.ts +++ b/src/modelo/modelo.controller.ts @@ -28,20 +28,6 @@ import { ModeloOutputDto } from './dto/output/modelo.dto'; export class ModeloController { constructor(private modeloService: ModeloService) {} - @Serealize(ModeloOutputDto) - @Get() - @UseGuards(AuthGuard('jwt')) - @ApiOperation({ description: 'Endpoint que retorna todos los modelos.' }) - @ApiBearerAuth('jwt') - @ApiQuery({ - description: 'Tipo de marca que se busca.', - name: 'tipo', - type: 'text', - }) - get(@Query() query: ModeloDto) { - return this.modeloService.findAll(query.tipo); - } - @Post() @UseGuards(AuthGuard('jwt')) @ApiOperation({ description: 'Endpoint que crea un nuevo modelo.' }) @@ -59,4 +45,18 @@ export class ModeloController { ); return this.modeloService.create(body.modelo, body.tipo); } + + @Serealize(ModeloOutputDto) + @Get() + @UseGuards(AuthGuard('jwt')) + @ApiOperation({ description: 'Endpoint que retorna todos los modelos.' }) + @ApiBearerAuth('jwt') + @ApiQuery({ + description: 'Tipo de marca que se busca.', + name: 'tipo', + type: 'text', + }) + get(@Query() query: ModeloDto) { + return this.modeloService.findAll(query.tipo); + } } diff --git a/src/modulo/dto/input/create.dto.ts b/src/modulo/dto/input/create.dto.ts index 6064e5b..aa3cef1 100644 --- a/src/modulo/dto/input/create.dto.ts +++ b/src/modulo/dto/input/create.dto.ts @@ -1,9 +1,6 @@ -import { IsInt, IsNotEmpty, IsString, MaxLength } from 'class-validator'; +import { IsNotEmpty, IsString, MaxLength } from 'class-validator'; export class CreateModuloDto { - @IsInt() - id_institucion: number; - @IsString() @IsNotEmpty() @MaxLength(30) diff --git a/src/modulo/modulo.controller.ts b/src/modulo/modulo.controller.ts index 40a583f..b2eb9b1 100644 --- a/src/modulo/modulo.controller.ts +++ b/src/modulo/modulo.controller.ts @@ -1,10 +1,12 @@ import { Body, + ConflictException, Controller, Get, Post, Put, Query, + Request, UseGuards, } from '@nestjs/common'; import { AuthGuard } from '@nestjs/passport'; @@ -17,6 +19,7 @@ import { } from '@nestjs/swagger'; import { Serealize } from '../interceptors/serialize.interceptor'; import { ModuloService } from './modulo.service'; +import { Operador } from 'src/operador/entity/operador.entity'; import { IdInstitucionDto } from '../dto/id-institucion.dto'; import { CreateModuloDto } from './dto/input/create.dto'; import { ModuloDto } from './dto/input/modulo.dto'; @@ -37,8 +40,14 @@ export class ModuloController { description: 'Ambas variables son obligatorias.', examples: { ejemplo: { value: { id_institucion: 200, modulo: '' } } }, }) - create(@Body() body: CreateModuloDto) { - return this.moduloService.create(body.id_institucion, body.modulo); + create(@Request() req, @Body() body: CreateModuloDto) { + const admin: Operador = req.user.operador; + + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) + throw new ConflictException( + 'No tienes permisos para realizar esta acción.', + ); + return this.moduloService.create(admin, body.modulo); } @Serealize(ModuloOutputDto) @@ -104,7 +113,13 @@ export class ModuloController { ejemplo: { value: { id_modulo: 1, _activo: true, _modulo: '' } }, }, }) - update(@Body() body: UpdateModuloDto) { - return this.moduloService.update(body); + update(@Request() req, @Body() body: UpdateModuloDto) { + const admin: Operador = req.user.operador; + + if (!admin || admin.tipoUsuario.id_tipo_usuario != 3) + throw new ConflictException( + 'No tienes permisos para realizar esta acción.', + ); + return this.moduloService.update(admin, body); } } diff --git a/src/modulo/modulo.service.ts b/src/modulo/modulo.service.ts index 71dca26..3a854a8 100644 --- a/src/modulo/modulo.service.ts +++ b/src/modulo/modulo.service.ts @@ -7,6 +7,7 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { Institucion } from '../institucion/entity/institucion.entity'; import { Modulo } from './entity/modulo.entity'; +import { Operador } from 'src/operador/entity/operador.entity'; import { InstitucionService } from '../institucion/institucion.service'; @Injectable() @@ -16,14 +17,12 @@ export class ModuloService { private institucionService: InstitucionService, ) {} - async create(id_institucion: number, modulo: string) { - const institucion = await this.institucionService.findById(id_institucion); - - return this.existeModulo(institucion, modulo) + async create(admin: Operador, modulo: string) { + return this.existeModulo(admin.institucion, modulo) .then(() => this.repository.save( this.repository.create({ - institucion, + institucion: admin.institucion, modulo, }), ), @@ -93,9 +92,15 @@ export class ModuloService { }); } - update(attrs: Partial) { + update(admin: Operador, attrs: Partial) { return this.findById(attrs.id_modulo) .then(async (modulo) => { + if ( + admin.institucion.id_institucion != modulo.institucion.id_institucion + ) + throw new ConflictException( + 'No puedes actualizar la información de este módulo porque no le corresponde a tu institución.', + ); if (attrs.modulo) await this.existeModulo(modulo.institucion, attrs.modulo); Object.assign(modulo, attrs);