From 8c8fdf5f8874baae375e894ab656daedb7d1c13c Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Thu, 12 Jan 2023 16:47:43 -0300 Subject: [PATCH] FIX: canUntoggle logic --- docsfera.json | 25 ++++++++++++++++++++++++- package-lock.json | 14 +++++++------- package.json | 2 +- src/modules/roles/dto/entities.ts | 8 ++++++++ src/modules/roles/roles.controller.ts | 4 ++-- src/modules/roles/roles.service.ts | 23 ++++++++--------------- 6 files changed, 50 insertions(+), 26 deletions(-) diff --git a/docsfera.json b/docsfera.json index f436dea..00dea83 100644 --- a/docsfera.json +++ b/docsfera.json @@ -1587,6 +1587,17 @@ ], "type": "string" } + }, + { + "name": "canUntoggleLogic", + "required": false, + "in": "query", + "schema": { + "enum": [ + "data_assets_sharing" + ], + "type": "string" + } } ], "responses": { @@ -3339,7 +3350,7 @@ } }, "info": { - "title": "Maestro - main", + "title": "Maestro - fix/can-untoggle", "description": "Documentation for Maestro gateway", "version": "1.0.0", "contact": {} @@ -3993,6 +4004,10 @@ }, "usage": { "type": "string" + }, + "canUntoggle": { + "type": "boolean", + "description": "Whether this role can be untoggled" } }, "required": [ @@ -4470,6 +4485,10 @@ }, "usage": { "type": "string" + }, + "canUntoggle": { + "type": "boolean", + "description": "Whether this role can be untoggled" } }, "required": [ @@ -4560,6 +4579,10 @@ }, "usage": { "type": "string" + }, + "canUntoggle": { + "type": "boolean", + "description": "Whether this role can be untoggled" } }, "required": [ diff --git a/package-lock.json b/package-lock.json index 12f3dd6..d6bc5ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.27.1", + "@dadosfera/protospack-v2": "3.27.2-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1727,9 +1727,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.27.1", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.27.1.tgz", - "integrity": "sha512-bAhHSS1cquIJadHiWSO1FFJFfugrJXEIWKFzE7PByeC9XldGru/qlART7KXbxqYHQq8lALKJy1ILyMyG91BsTA==", + "version": "3.27.2-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.27.2-beta.2.tgz", + "integrity": "sha512-jDuaMhsMRqM4JiCAHWP0N4iEHiFtnVckpAtcMDYuFtW0ZLvnaayA7ZkCiPLdhUBaq2k9W3vb1dYvHlaFGJl5SQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12284,9 +12284,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.27.1", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.27.1.tgz", - "integrity": "sha512-bAhHSS1cquIJadHiWSO1FFJFfugrJXEIWKFzE7PByeC9XldGru/qlART7KXbxqYHQq8lALKJy1ILyMyG91BsTA==", + "version": "3.27.2-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.27.2-beta.2.tgz", + "integrity": "sha512-jDuaMhsMRqM4JiCAHWP0N4iEHiFtnVckpAtcMDYuFtW0ZLvnaayA7ZkCiPLdhUBaq2k9W3vb1dYvHlaFGJl5SQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 6b03068..1e811b0 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.4", - "@dadosfera/protospack-v2": "3.27.1", + "@dadosfera/protospack-v2": "3.27.2-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", diff --git a/src/modules/roles/dto/entities.ts b/src/modules/roles/dto/entities.ts index feeb915..f3ff39e 100644 --- a/src/modules/roles/dto/entities.ts +++ b/src/modules/roles/dto/entities.ts @@ -25,6 +25,8 @@ export class RoleDto { customer?: Customer; @ApiProperty() usage: string; + @ApiPropertyOptional({ description: 'Whether this role can be untoggled' }) + canUntoggle?: boolean; } export class CustomerRole extends OmitType(RoleDto, ['customer']) {} @@ -34,11 +36,17 @@ export enum TrueOrFalseEnum { true = 'true', false = 'false', } + +export enum CanUntoggleLogicEnum { + data_assets_sharing = 'data_assets_sharing', +} export class GetRolesByCustomerReq { @ApiPropertyOptional() permissionId?: string[]; @ApiPropertyOptional({ enum: TrueOrFalseEnum }) getUsers?: TrueOrFalseEnum; + @ApiPropertyOptional({ enum: CanUntoggleLogicEnum }) + canUntoggleLogic?: CanUntoggleLogicEnum; } export class GetRolesByCustomerRes { diff --git a/src/modules/roles/roles.controller.ts b/src/modules/roles/roles.controller.ts index 2677ac4..ca5ab99 100644 --- a/src/modules/roles/roles.controller.ts +++ b/src/modules/roles/roles.controller.ts @@ -71,12 +71,12 @@ export class RolesController { @ApiOkResponse({ type: GetRolesByCustomerRes }) async searchRoles( @User() user: RequestUser, - @Query() filters: GetRolesByCustomerReq, + @Query() params: GetRolesByCustomerReq, @Headers('dadosfera-lang') language, ) { this.logger.info('searchRoles', { user }); this.rolesService.setLanguage(language); - return await this.rolesService.roleSearch(filters, user); + return await this.rolesService.roleSearch(params, user); } @Post() diff --git a/src/modules/roles/roles.service.ts b/src/modules/roles/roles.service.ts index edc5a7f..da12c7b 100644 --- a/src/modules/roles/roles.service.ts +++ b/src/modules/roles/roles.service.ts @@ -70,12 +70,7 @@ export class RolesService { return { role: roleTreated }; } - async roleSearch( - filters: GetRolesByCustomerReq, - { customer_id, access_token }: any, - ) { - const meta = new Metadata(); - meta.add('access_token', access_token); + async roleSearch(filters: GetRolesByCustomerReq, { customer_id }) { let { permissionId: permissionIds } = filters; if (permissionIds && !Array.isArray(permissionIds)) permissionIds = [permissionIds]; @@ -89,15 +84,13 @@ export class RolesService { return seqId; }) || []; const roles = await lastValueFrom( - this.rolesClientService.RoleSearch( - { - customerId: customer_id, - getUsers: isGetUsers, - permissionIds: [], - permissionSeqIds, - }, - meta, - ), + this.rolesClientService.RoleSearch({ + customerId: customer_id, + getUsers: isGetUsers, + permissionIds: [], + permissionSeqIds, + canUntoggleLogic: filters.canUntoggleLogic, + }), ); const rolesTreated = this.getRolesPermissionsName(roles.roles); return { roles: rolesTreated };