From c87ceec77ba915c93d837b5b6ee0c8d940abe945 Mon Sep 17 00:00:00 2001 From: Victor Radael Date: Fri, 15 Jul 2022 15:10:11 -0300 Subject: [PATCH] FIX: Upload Imaga Files and add permissions --- src/modules/connector/connector.controller.ts | 49 +++++++++++-------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/src/modules/connector/connector.controller.ts b/src/modules/connector/connector.controller.ts index 5360670..1141ac5 100644 --- a/src/modules/connector/connector.controller.ts +++ b/src/modules/connector/connector.controller.ts @@ -12,8 +12,9 @@ import { UseInterceptors, Inject, Headers, + UploadedFiles, } from '@nestjs/common'; -import { FileInterceptor } from '@nestjs/platform-express'; +import { FileInterceptor, FilesInterceptor } from '@nestjs/platform-express'; import { ApiBearerAuth, ApiConsumes, ApiTags } from '@nestjs/swagger'; import { ConnectorClientService } from './client.service'; import { AddTagDto } from './dtos/add-tag'; @@ -23,12 +24,16 @@ import { DeleteConnectorDto } from './dtos/delete-connector'; import { GetAllDto } from './dtos/get-all'; import { RemoveTagDto } from './dtos/remove-tag'; import { UpdateDto } from './dtos/update'; -import { UploadFileDto } from './dtos/upload-file'; import { DadosferaLogger } from 'dadosfera-logs'; -import { Authenticated } from 'src/authentication/authentication.decorator'; +import { + Authenticated, + RequireAllPermissions, +} from 'src/authentication/authentication.decorator'; +import { Permissions } from 'src/authentication/permissions.enum'; @ApiTags('connectors') @ApiBearerAuth() +@Authenticated() @Controller('connectors') export class ConnectorController { logger: any; @@ -41,7 +46,7 @@ export class ConnectorController { } @Post() - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.CREATE) @ApiConsumes('multipart/form-data') @UseInterceptors(FileInterceptor('file')) async uploadConnector( @@ -58,23 +63,25 @@ export class ConnectorController { return response; } - @Post('/upload') - @Authenticated() + @Post('/uploads') + @RequireAllPermissions(Permissions.CONNECTORS.CREATE) @ApiConsumes('multipart/form-data') - @UseInterceptors(FileInterceptor('file')) - async uploadFile(@UploadedFile() file, @Body() { name }: UploadFileDto) { + @UseInterceptors(FilesInterceptor('files')) + async uploadFile(@UploadedFiles() files) { this.logger.info('/upload - Upload Connector Route'); - - const response = await this.connectorClientService.uploadFile({ - file, - name, + const promises = files.map(async (file) => { + return await this.connectorClientService.uploadFile({ + file, + name: file.originalname.split('.')[0], + }); }); + const response = await Promise.all(promises); return response; } @Post('/multiple-connectors-upload') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.CREATE) @ApiConsumes('multipart/form-data') @UseInterceptors(FileInterceptor('file')) async uploadConnectorsFile(@UploadedFile() file: UploadConnectorsFileDto) { @@ -88,7 +95,7 @@ export class ConnectorController { } @Get() - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.GET) async getAllConnectors( @Headers('dadosfera-lang') language, @Query() queries: GetAllDto, @@ -114,13 +121,13 @@ export class ConnectorController { } @Get('/tags') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.GET) async getConnectorsTags() { return await this.connectorClientService.getConnectorsTags(); } @Get('/:plugin') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.GET) async getConnector( @Headers('dadosfera-lang') language, @Param('plugin') plugin: string, @@ -142,7 +149,7 @@ export class ConnectorController { } @Get('/:plugin/details') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.GET) async getConnectorDetails( @Headers('dadosfera-lang') language, @Param('plugin') plugin: string, @@ -164,7 +171,7 @@ export class ConnectorController { } @Put('/:plugin') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.UPDATE) @ApiConsumes('multipart/form-data') async updateConnector( @Param('plugin') plugin: string, @@ -186,7 +193,7 @@ export class ConnectorController { } @Put('/:plugin/add-tag') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.UPDATE) async addTagOnConnector( @Param('plugin') plugin: string, @Body() body: AddTagDto, @@ -213,7 +220,7 @@ export class ConnectorController { } @Put('/:plugin/remove-tag') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.UPDATE) async removeTagOnConnector( @Param('plugin') plugin: string, @Body() body: RemoveTagDto, @@ -241,7 +248,7 @@ export class ConnectorController { } @Delete('/:plugin') - @Authenticated() + @RequireAllPermissions(Permissions.CONNECTORS.DELETE) async deleteConnector( @Param('plugin') plugin: string, @Body() { version }: DeleteConnectorDto,