From 14c686cff459d0bd7db10226a8e06ded5d2d7dea Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Mon, 14 Nov 2022 15:40:38 -0300 Subject: [PATCH] FIX: renamed catalog create permission - Catalog controller using permission decorator on every route --- docsfera.json | 2 +- src/authentication/permissions.enum.ts | 8 +-- src/modules/catalog/catalog.controller.ts | 81 +++++++++++++++-------- 3 files changed, 58 insertions(+), 33 deletions(-) diff --git a/docsfera.json b/docsfera.json index 34c7c05..bb26801 100644 --- a/docsfera.json +++ b/docsfera.json @@ -3300,7 +3300,7 @@ "info": { "title": "Maestro - main", "description": "Documentation for Maestro gateway", - "version": "11.11.2022 - 12:24", + "version": "14.11.2022 - 15:37", "contact": {} }, "tags": [], diff --git a/src/authentication/permissions.enum.ts b/src/authentication/permissions.enum.ts index 92a1eb3..6682fb7 100644 --- a/src/authentication/permissions.enum.ts +++ b/src/authentication/permissions.enum.ts @@ -297,12 +297,12 @@ export const PERMISSIONS_GROUPS = { }, CREATE: { seqid: 19, - claim: 'POST /catalog', + claim: 'catalog:create', usage: PermissionUsages.INTERNAL, name: { - 'pt-br': 'Criar atributos no catálogo', - 'en-us': 'Create attributes', - 'es-es': 'Crear atributos', + 'pt-br': 'Criar Ativos', + 'en-us': 'Create Assets', + 'es-es': 'Crear Activos', }, }, UPDATE: { diff --git a/src/modules/catalog/catalog.controller.ts b/src/modules/catalog/catalog.controller.ts index e580993..ff6d047 100644 --- a/src/modules/catalog/catalog.controller.ts +++ b/src/modules/catalog/catalog.controller.ts @@ -14,8 +14,8 @@ import { } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { - AuthenticateCondition, Authenticated, + RequireSomePermission, } from '../../authentication/authentication.decorator'; import { PERMISSIONS_GROUPS } from '../../authentication/permissions.enum'; import { CatalogService } from './catalog.service'; @@ -34,36 +34,9 @@ import { IUpdateDataRequest, } from './dtos'; -const catalogPermissions = PERMISSIONS_GROUPS.CATALOG.permissions; @ApiTags('Catalog') @Controller('catalog') @Authenticated() -@AuthenticateCondition((req, user: RequestUser) => { - if (user.permissions.includes(catalogPermissions.DATA_MANAGER.seqid)) - return true; - - if (req.path.includes('/manage-permissions')) return true; - let action: keyof typeof catalogPermissions; - - switch (req.method) { - case 'POST': - case 'PUT': - action = 'UPDATE'; - break; - - case 'DELETE': - if (req.path.includes('/comment')) action = 'UPDATE'; - else action = req.method; - break; - - default: - action = req.method as 'GET'; - } - - return user.permissions.includes( - PERMISSIONS_GROUPS.CATALOG.permissions[action].seqid, - ); -}) export class CatalogController { logger: DadosferaLogger; constructor( @@ -75,6 +48,10 @@ export class CatalogController { } @Get() + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async catalogAll( @User() user: RequestUser, @Query() query, @@ -110,6 +87,10 @@ export class CatalogController { } @Get('tags') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async findAllTags(@Body() body) { this.logger.info(`/catalog - ON FIND ALL TAGS ROUTE`, { user: body.info.user_id, @@ -129,6 +110,10 @@ export class CatalogController { } @Get('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAsset( @User() user: RequestUser, @Headers() headers, @@ -183,6 +168,10 @@ export class CatalogController { } @Get('data-asset/rls/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetRls( @User() user: RequestUser, @Headers() headers, @@ -237,6 +226,10 @@ export class CatalogController { } @Get('data-asset/:id/columns-metadata') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetColumnsMetadata( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -273,6 +266,10 @@ export class CatalogController { } @Get('data-asset/:id/preview') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetPreview( @User() user: RequestUser, @Headers('Dadosfera-lang') language, @@ -308,6 +305,10 @@ export class CatalogController { } @Get('data-asset/:id/docs') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.GET, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async getDataAssetDocs( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -343,6 +344,10 @@ export class CatalogController { } @Put('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async updateDataAsset( @User() user: RequestUser, @Headers('Dadosfera-Lang') language, @@ -372,6 +377,10 @@ export class CatalogController { } @Post('data-asset/:id/docs') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async manageDataAssetDocs( @User() user: RequestUser, @Headers() headers, @@ -440,6 +449,10 @@ export class CatalogController { } @Post() + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.CREATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async createDataAsset( @User() user: RequestUser, @Body() body: ICreateDataAsset, @@ -460,6 +473,10 @@ export class CatalogController { } @Post('data-asset/:id/comment') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async commentOnDataAsset( @Param('id') id: string, @User() user: RequestUser, @@ -482,6 +499,10 @@ export class CatalogController { } @Delete('data-asset/:id') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.DELETE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async deleteDataAsset( @Param('id') data_asset_id: string, @User() user: RequestUser, @@ -504,6 +525,10 @@ export class CatalogController { } @Delete('data-asset/:id/comment') + @RequireSomePermission( + PERMISSIONS_GROUPS.CATALOG.permissions.UPDATE, + PERMISSIONS_GROUPS.CATALOG.permissions.DATA_MANAGER, + ) async deleteComment( @Param('id') id: string, @User() user: RequestUser,