From b89909ad6654e465185be03fc300fde44bbee2b5 Mon Sep 17 00:00:00 2001 From: marcosrodrigues-dadosfera Date: Fri, 7 Aug 2026 12:18:37 -0300 Subject: [PATCH 1/2] FIX: skip nimbus update when customer haven't catalog module --- docsfera.json | 44 -------------- src/modules/inputs/inputs.service.ts | 9 +-- .../pipelinesV2/pipelines.controller.ts | 9 +-- src/modules/pipelinesV2/pipelines.service.ts | 59 ++++++++++--------- src/utils/PackTheMetadata.ts | 1 + 5 files changed, 38 insertions(+), 84 deletions(-) diff --git a/docsfera.json b/docsfera.json index 5373202..bdf641a 100644 --- a/docsfera.json +++ b/docsfera.json @@ -4570,50 +4570,6 @@ ] } }, - "/platform/pipelines/{pipelineId}/pipeline_run/{runId}/jobs": { - "get": { - "operationId": "PlatformApiController_getPipelineRunJobs", - "summary": "Get pipeline run jobs", - "parameters": [ - { - "name": "pipelineId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "runId", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - } - }, - "tags": [ - "Platform API" - ], - "security": [ - { - "access-token": [] - } - ] - } - }, "/platform/jobs/{jobId}/input": { "put": { "operationId": "PlatformApiController_updateJobInput", diff --git a/src/modules/inputs/inputs.service.ts b/src/modules/inputs/inputs.service.ts index 96df891..99a6753 100644 --- a/src/modules/inputs/inputs.service.ts +++ b/src/modules/inputs/inputs.service.ts @@ -23,6 +23,7 @@ import { } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/messages'; import { Info } from '@dadosfera/protospack-v2/dist/lib/Input/interfaces/entities'; import { CreateInputReq } from './dtos/input.model'; +import { Metadata } from '@grpc/grpc-js'; @Injectable() @@ -73,10 +74,10 @@ export class InputsService { objectCamelToSnake(createInputResponse); return createInputResponse; }, - update: async (updateInputDTO: UpdateInputRequest): Promise => { + update: async (updateInputDTO: UpdateInputRequest, metadata: Metadata): Promise => { this.logger.info('InputClientService - Update' + JSON.stringify(updateInputDTO)); const updateInputResponse = await lastValueFrom( - this.inputWriteService.InputUpdate(updateInputDTO), + this.inputWriteService.InputUpdate(updateInputDTO, metadata), ); return updateInputResponse; @@ -206,7 +207,7 @@ export class InputsService { return findOneInputResponse; } - async update(id: string, data, info: Info) { + async update(id: string, data, info: Info, metadata?: Metadata) { // this.validateCron({ ...data, info }); try { const { @@ -217,7 +218,7 @@ export class InputsService { id, ...data, info, - }); + }, metadata); const updateInputResponse = this.adjustInputPayload( input, diff --git a/src/modules/pipelinesV2/pipelines.controller.ts b/src/modules/pipelinesV2/pipelines.controller.ts index 70fab15..ea64d8c 100644 --- a/src/modules/pipelinesV2/pipelines.controller.ts +++ b/src/modules/pipelinesV2/pipelines.controller.ts @@ -317,7 +317,6 @@ export class PipelinesController { ) { this.logger.info('PipelinesController - update', { user }); - const { customer_id, customer_name, user_id, username } = user; const info: Info = { user_id: user.user_id, customer: user.customer_name, @@ -325,13 +324,7 @@ export class PipelinesController { pipeline_id: pipelineId }; - const metadata = PackTheMetadata({ - customer_id, - customer_name, - user_id, - username, - language, - }); + const metadata = PackTheMetadata(user); const response = await this.pipelinesClientService.updatePipelineInput( pipelineId, diff --git a/src/modules/pipelinesV2/pipelines.service.ts b/src/modules/pipelinesV2/pipelines.service.ts index 2a8db84..41d9354 100644 --- a/src/modules/pipelinesV2/pipelines.service.ts +++ b/src/modules/pipelinesV2/pipelines.service.ts @@ -383,7 +383,8 @@ export class PipelinesService implements OnModuleInit { const updateInputResponse = await this.inputsService.update( inputId, updateInputDTO, - info + info, + metadata ); const inputRollback = () => { @@ -404,34 +405,36 @@ export class PipelinesService implements OnModuleInit { const nimbusUpdates = updateInputResponse?.tablesUpdate || []; - nimbusUpdates.forEach(update => { - const nimbusRollback = () => { - return this.nimbusService.renameTable( - info.customer, - update.database, - { - table_name: update.table_name, - table_schema: update.table_schema - }, - { - table_name: update.old_table_name, - table_schema: update.old_table_schema - } - ); + if (user.customer_modules.includes('catalog')) { + nimbusUpdates.forEach(update => { + const nimbusRollback = () => { + return this.nimbusService.renameTable( + info.customer, + update.database, + { + table_name: update.table_name, + table_schema: update.table_schema + }, + { + table_name: update.old_table_name, + table_schema: update.old_table_schema + } + ); + } + rollback.push(nimbusRollback); + }); + + try { + await this.updateNimbus(info.customer, nimbusUpdates); + } catch (error) { + this.logger.error(error); + if (error instanceof AxiosError) { + this.logger.error(JSON.stringify(error.response.data)); + } + await this.executeRenameRollback(rollback); + + throw new Error("Error Nimbus updating tables"); } - rollback.push(nimbusRollback); - }); - - try { - await this.updateNimbus(info.customer, nimbusUpdates); - } catch (error) { - this.logger.error(error); - if (error instanceof AxiosError) { - this.logger.error(JSON.stringify(error.response.data)); - } - await this.executeRenameRollback(rollback); - - throw new Error("Error Nimbus updating tables"); } try { diff --git a/src/utils/PackTheMetadata.ts b/src/utils/PackTheMetadata.ts index 18958fe..c584daa 100644 --- a/src/utils/PackTheMetadata.ts +++ b/src/utils/PackTheMetadata.ts @@ -9,6 +9,7 @@ interface IMetadata { details?: string; sensitive?: string; roles?: string[]; + customer_modules?: string[]; is_data_manager?: boolean; access_token?: string; host?: string; From 31dda867d12b5c6babd95c6f80936e5b4f27a125 Mon Sep 17 00:00:00 2001 From: marcosrodrigues-dadosfera Date: Wed, 12 Aug 2026 09:57:23 -0300 Subject: [PATCH 2/2] FIX: require collect module in endpoints --- docsfera.json | 234 ++++++++++++++++++ src/authentication/permissions.enum.ts | 2 + src/modules/catalog/catalog.controller.ts | 54 ++++ .../connection-test.controller.ts | 6 +- .../connection/connection.controller.ts | 6 +- src/modules/connector/connector.controller.ts | 27 +- .../pipelinesV2/pipelines.controller.ts | 6 +- .../platform-api/platform-api.controller.ts | 4 +- 8 files changed, 334 insertions(+), 5 deletions(-) diff --git a/docsfera.json b/docsfera.json index bdf641a..b3a85b5 100644 --- a/docsfera.json +++ b/docsfera.json @@ -900,6 +900,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -949,6 +952,9 @@ "connections" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -997,6 +1003,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -1033,6 +1042,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -1066,6 +1078,9 @@ "connections" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -2403,6 +2418,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2486,6 +2504,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2525,6 +2546,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2564,6 +2588,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2601,6 +2628,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2640,6 +2670,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2681,6 +2714,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -2722,6 +2758,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -3071,6 +3110,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3120,6 +3162,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3190,6 +3235,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3230,6 +3278,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3270,6 +3321,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3310,6 +3364,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3350,6 +3407,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3397,6 +3457,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3442,6 +3505,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3490,6 +3556,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3528,6 +3597,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3586,6 +3658,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3634,6 +3709,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3674,6 +3752,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3716,6 +3797,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3765,6 +3849,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3814,6 +3901,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -3861,6 +3951,9 @@ "PipelinesV2" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4031,6 +4124,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4056,6 +4152,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4092,6 +4191,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4126,6 +4228,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4160,6 +4265,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4187,6 +4295,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4214,6 +4325,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4241,6 +4355,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4277,6 +4394,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4313,6 +4433,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4340,6 +4463,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4367,6 +4493,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4404,6 +4533,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4440,6 +4572,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4484,6 +4619,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4520,6 +4658,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4564,6 +4705,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4600,6 +4744,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4634,6 +4781,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4670,6 +4820,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4706,6 +4859,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4743,6 +4899,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4770,6 +4929,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -4797,6 +4959,9 @@ "Platform API" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -5208,6 +5373,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5251,6 +5419,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5360,6 +5531,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5392,6 +5566,9 @@ "Catalog" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -5434,6 +5611,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5527,6 +5707,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5585,6 +5768,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5633,6 +5819,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5726,6 +5915,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5776,6 +5968,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5834,6 +6029,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5890,6 +6088,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5950,6 +6151,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -5990,6 +6194,9 @@ "Catalog" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -6030,6 +6237,9 @@ "Catalog" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -6090,6 +6300,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -6148,6 +6361,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -6524,6 +6740,9 @@ { "access-token": [] }, + { + "access-token": [] + }, { "access-token": [] } @@ -6977,6 +7196,9 @@ "Connection Test" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -7013,6 +7235,9 @@ "Connection Test" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -7049,6 +7274,9 @@ "Connection Test" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -7085,6 +7313,9 @@ "Connection Test" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } @@ -7121,6 +7352,9 @@ "Connection Test" ], "security": [ + { + "access-token": [] + }, { "access-token": [] } diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 82ee026..1cb5045 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -722,6 +722,8 @@ export const DADOSFERA_MODULES_KEYS = { PII: 'pii', EMBED: 'embedded-analytics', EMBED_ASSIGNED: 'embed-assigned', + CATALOG: 'catalog', + COLLECT: 'collect', } export const DADOSFERA_MODULES: Array = [ diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index 308a082..ef8ab78 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -85,6 +85,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async searchCatalog( @User() user: RequestUser, @Query() query: ICatalogAllRequest, @@ -124,6 +127,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async dowloadAsserts( @User() user: RequestUser, @Query() query: ICatalogAllRequest, @@ -167,6 +173,9 @@ export class CatalogController { @ApiInternalOnlyEndpoint() @Get('data-asset') + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async findByPipelineAndObject(@User() user: RequestUser, @Query() query) { const { username, user_id, customer_id, customer_name, permissions } = user; const { pipeline, object } = query; @@ -225,6 +234,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async findAllTags(@Body() body) { this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, { user: body.info.user_id, @@ -276,6 +288,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async getDataAsset( @User() user: RequestUser, @Param('id') id: string, @@ -387,6 +402,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async getDataAssetColumnsMetadata( @User() user: RequestUser, @Language() language: LanguageEnum, @@ -418,6 +436,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async getDataAssetPreview( @User() user: RequestUser, @Language() language: LanguageEnum, @@ -449,6 +470,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.GET, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async getDataAssetDocs( @User() user: RequestUser, @Language() language: LanguageEnum, @@ -480,6 +504,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async updateDataAsset( @User() user: RequestUser, @Language() language: LanguageEnum, @@ -515,6 +542,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.CERTIFY, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async updateDataAssetCertificationStatus( @User() user: RequestUser, @Language() language: LanguageEnum, @@ -542,6 +572,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async manageDataAssetDocs( @User() user: RequestUser, @Headers() headers, @@ -579,6 +612,9 @@ export class CatalogController { @ApiInternalOnlyEndpoint() @Put('data-asset/:id/manage-permissions') + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async manageDataAssetPermissions( @Param('id') id: string, @User() user: RequestUser, @@ -601,6 +637,9 @@ export class CatalogController { @ApiInternalOnlyEndpoint() @Put('data-asset/:id/revoke-permissions') + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async revokeDataAssetPermissions( @Param('id') id: string, @User() user: RequestUser, @@ -626,6 +665,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.CREATE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async createDataAsset( @User() user: RequestUser, @Body() body: ICreateDataAsset, @@ -650,6 +692,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async commentOnDataAsset( @Param('id') id: string, @User() user: RequestUser, @@ -676,6 +721,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.DELETE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async deleteDataAsset(@Param('id') id: string, @User() user: RequestUser) { const { customer_id, customer_name, user_id, username } = user; const metadata = PackTheMetadata({ @@ -697,6 +745,9 @@ export class CatalogController { PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async deleteComment( @Param('id') id: string, @User() user: RequestUser, @@ -850,6 +901,9 @@ export class CatalogController { @Get('nimbus-dashboards') @RequireAllPermissions(PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER) + @RequireModule( + DADOSFERA_MODULES_KEYS.CATALOG + ) async getNimbusDashboards( @User() user: RequestUser, @Body() body: GetNimbusDashboardsRequest, diff --git a/src/modules/connection-test/connection-test.controller.ts b/src/modules/connection-test/connection-test.controller.ts index f197358..029da68 100644 --- a/src/modules/connection-test/connection-test.controller.ts +++ b/src/modules/connection-test/connection-test.controller.ts @@ -24,15 +24,19 @@ import { GetTableMetadataReq, } from './dto/connection-test'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; -import { Authenticated } from 'src/decorators/authentication.decorator'; +import { Authenticated, RequireModule } from 'src/decorators/authentication.decorator'; import { GrpcToHttpExceptionFilter } from 'src/error/grpc-to-http-exception.filter'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; +import { DADOSFERA_MODULES_KEYS } from 'src/authentication/permissions.enum'; @ApiInternalOnlyController() @ApiTags('Connection Test') @Controller('connection-test') @UseFilters(new GrpcToHttpExceptionFilter()) @Authenticated() +@RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT +) export class ConnectionTestController { logger: any; constructor( diff --git a/src/modules/connection/connection.controller.ts b/src/modules/connection/connection.controller.ts index 194e9aa..b1987dc 100644 --- a/src/modules/connection/connection.controller.ts +++ b/src/modules/connection/connection.controller.ts @@ -16,8 +16,9 @@ import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { Authenticated, RequireAllPermissions, + RequireModule, } from 'src/decorators/authentication.decorator'; -import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; +import { DADOSFERA_MODULES_KEYS, PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; import { RequestUser, User } from 'src/decorators/user.decorator'; import { ValidationPipe } from '../../pipes/object-validation.pipe'; import { @@ -39,6 +40,9 @@ const connectionPermissions = PERMISSIONS_GROUPS.CONNECTION.permissions; @ApiTags('connections') @Authenticated() @Controller('connections') +@RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT +) export class ConnectionController { logger: any; constructor( diff --git a/src/modules/connector/connector.controller.ts b/src/modules/connector/connector.controller.ts index c755ae8..858ef8c 100644 --- a/src/modules/connector/connector.controller.ts +++ b/src/modules/connector/connector.controller.ts @@ -25,9 +25,10 @@ import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { Authenticated, RequireAllPermissions, + RequireModule, RequireSomePermission, } from 'src/decorators/authentication.decorator'; -import { PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; +import { DADOSFERA_MODULES_KEYS, PERMISSIONS_GROUPS } from 'src/authentication/permissions.enum'; import { Language } from 'src/decorators/language.decorator'; import { LanguageEnum } from 'src/utils/languages.enum'; import { ApiInternalOnlyController } from 'src/decorators/swagger.decorator'; @@ -99,6 +100,9 @@ export class ConnectorController { PERMISSIONS_GROUPS.PIPELINE.permissions.UPDATE, PERMISSIONS_GROUPS.PIPELINE.permissions.DELETE, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async getAllConnectors( @Language() language: LanguageEnum, @Query() queries: GetAllDto, @@ -131,6 +135,9 @@ export class ConnectorController { PERMISSIONS_GROUPS.PIPELINE.permissions.UPDATE, PERMISSIONS_GROUPS.PIPELINE.permissions.DELETE, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async getConnectorsTags() { return await this.connectorClientService.getConnectorsTags(); } @@ -143,6 +150,9 @@ export class ConnectorController { PERMISSIONS_GROUPS.PIPELINE.permissions.UPDATE, PERMISSIONS_GROUPS.PIPELINE.permissions.DELETE, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async getConnector( @Language() language: LanguageEnum, @Param('plugin') plugin: string, @@ -171,6 +181,9 @@ export class ConnectorController { PERMISSIONS_GROUPS.PIPELINE.permissions.UPDATE, PERMISSIONS_GROUPS.PIPELINE.permissions.DELETE, ) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async getConnectorDetails( @Language() language: LanguageEnum, @Param('plugin') plugin: string, @@ -193,6 +206,9 @@ export class ConnectorController { @Put('/:plugin') @RequireAllPermissions(PERMISSIONS_GROUPS.CONNECTORS.permissions.UPDATE) @ApiConsumes('multipart/form-data') + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async updateConnector( @Param('plugin') plugin: string, @Body() body: UpdateDto, @@ -214,6 +230,9 @@ export class ConnectorController { @Put('/:plugin/add-tag') @RequireAllPermissions(PERMISSIONS_GROUPS.CONNECTORS.permissions.UPDATE) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async addTagOnConnector( @Param('plugin') plugin: string, @Body() body: AddTagDto, @@ -241,6 +260,9 @@ export class ConnectorController { @Put('/:plugin/remove-tag') @RequireAllPermissions(PERMISSIONS_GROUPS.CONNECTORS.permissions.UPDATE) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async removeTagOnConnector( @Param('plugin') plugin: string, @Body() body: RemoveTagDto, @@ -269,6 +291,9 @@ export class ConnectorController { @Delete('/:plugin') @RequireAllPermissions(PERMISSIONS_GROUPS.CONNECTORS.permissions.DELETE) + @RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT + ) async deleteConnector( @Param('plugin') plugin: string, @Query('version') version: string, diff --git a/src/modules/pipelinesV2/pipelines.controller.ts b/src/modules/pipelinesV2/pipelines.controller.ts index ea64d8c..c24c090 100644 --- a/src/modules/pipelinesV2/pipelines.controller.ts +++ b/src/modules/pipelinesV2/pipelines.controller.ts @@ -25,9 +25,10 @@ import { } from '@nestjs/swagger'; import { RequireAllPermissions, + RequireModule, RequireSomePermission, } from 'src/decorators/authentication.decorator'; -import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; +import { DADOSFERA_MODULES_KEYS, PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { PipelinesService } from './pipelines.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { Messages } from '@dadosfera/protospack-v2/dist/lib/PipelineV2'; @@ -57,6 +58,9 @@ type PipelineTablesConfig = { input_id?: string; tables: PipelineTable[] }; @ApiHeaders([{ name: 'dadosfera-lang', enum: LanguageEnum, required: false }]) @UseFilters(new GrpcToHttpExceptionFilter()) @Controller('pipelinesV2') +@RequireModule( + DADOSFERA_MODULES_KEYS.COLLECT +) export class PipelinesController { logger: DadosferaLogger; constructor( diff --git a/src/modules/platform-api/platform-api.controller.ts b/src/modules/platform-api/platform-api.controller.ts index 16d27b3..503d117 100644 --- a/src/modules/platform-api/platform-api.controller.ts +++ b/src/modules/platform-api/platform-api.controller.ts @@ -20,10 +20,11 @@ import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { Authenticated, RequireAllPermissions, + RequireModule, } from '../../decorators/authentication.decorator'; import { User, RequestUser } from '../../decorators/user.decorator'; import { PlatformApiService } from './platform-api.service'; -import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; +import { DADOSFERA_MODULES_KEYS, PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { ElasticsearchService } from '../../services/elasticsearch'; import { DynamoDBService, ReferenceColumn } from '../../services/dynamodb'; import { CustomersService } from '../customers/customers.service'; @@ -49,6 +50,7 @@ type RenameTablesBody = { @ApiTags('Platform API') @Controller('platform') +@RequireModule(DADOSFERA_MODULES_KEYS.COLLECT) export class PlatformApiController { private logger: any;