From 6382939e1ea6f0ed3c5d985fb37e1b0ae7d5182e Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Sat, 30 Jul 2022 03:13:57 -0300 Subject: [PATCH 1/9] FEAT: snowflake sso --- src/modules/auth/auth.controller.ts | 15 +++++++++++++++ src/modules/auth/auth.service.ts | 7 +++++++ 2 files changed, 22 insertions(+) diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index e664c96..078e9fc 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -21,9 +21,15 @@ import { AuthVerifyTotpMfaRequest, } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages'; +import { PERMISSIONS } from 'src/authentication/permissions.enum'; +import { + Authenticated, + RequireAllPermissions, +} from 'src/authentication/authentication.decorator'; import { AuthClientService } from './auth.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter'; +import { RequestUser, User } from 'src/authentication/user.decorator'; @ApiTags('Auth') @UseFilters(new GrpcToHttpExceptionFilter()) @@ -39,6 +45,15 @@ export class AuthController { this.logger = dadosferaLogger.logger; } + @Post('/sso/snowflake') + @RequireAllPermissions(PERMISSIONS.SNOWFLAKE.permissions.OPEN) + @HttpCode(HttpStatus.OK) + async snowflakeSignIn(@User() user: RequestUser) { + this.logger.info('/auth - snowflakeSignIn'); + + return this.authClient.snowflakeSignIn({ userId: user.user_id }); + } + @Post('sign-in') @HttpCode(HttpStatus.OK) async signIn(@Body() { username, password, totp }: AuthSignInRequest) { diff --git a/src/modules/auth/auth.service.ts b/src/modules/auth/auth.service.ts index 0da58eb..ba8b2a4 100644 --- a/src/modules/auth/auth.service.ts +++ b/src/modules/auth/auth.service.ts @@ -6,6 +6,7 @@ import { lastValueFrom } from 'rxjs'; import { ProtoServices } from '@dadosfera/protospack-v2/dist/lib/Duc'; import { AuthProtoService as AuthServiceInterface } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/write-service'; import { + AuthSnowflakeSignInRequest, AuthSignInRequest, AuthRefreshAccessTokenRequest, AuthEnableTotpMfaRequest, @@ -43,6 +44,12 @@ export class AuthClientService implements OnModuleInit { return lastValueFrom(this.authService.AuthGetPublicKeys({})); } + async snowflakeSignIn(input: AuthSnowflakeSignInRequest) { + this.logger.info('snowflakeSignIn'); + + return lastValueFrom(this.authService.AuthSnowflakeSignIn(input)); + } + async signIn({ username, password, totp }: AuthSignInRequest) { this.logger.info('SignIn'); From 2673e75f8103233f9127eb9f443bbdd0efc8ddef Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Tue, 2 Aug 2022 16:13:12 -0300 Subject: [PATCH 2/9] CHORE: protospack-v2 bumped --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b093142..ec0b1ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.10.0", + "@dadosfera/protospack-v2": "3.11.0-beta.2", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", + "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.2", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", + "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 3b5ed08..5863f93 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.10.0", + "@dadosfera/protospack-v2": "3.11.0-beta.2", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", From 7cf178db429f70493647409978edf93ab471a0ab Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Tue, 2 Aug 2022 16:49:36 -0300 Subject: [PATCH 3/9] FEAT: fake commit From 89a02a4e8a09cfbab6414a8e6c047d7d286ee8df Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Thu, 4 Aug 2022 11:11:42 -0300 Subject: [PATCH 4/9] FIX: added snowflake sso relaystate field --- package-lock.json | 14 +++++++------- package.json | 2 +- src/modules/auth/auth.controller.ts | 11 +++++++++-- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index ec0b1ca..b809aa0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.2", + "@dadosfera/protospack-v2": "3.11.0-beta.3", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", - "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", + "version": "3.11.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", + "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.2", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.2.tgz", - "integrity": "sha512-XInjoV9HMTNg4Uo1UA3p/WNaZpkWY7Dj5saJ3EAKOe+9Zw0c8MyRT1Jo7L7mUz9CZWRuogb7JJoH8v+T5yFc9Q==", + "version": "3.11.0-beta.3", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", + "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 5863f93..598a946 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.11.0-beta.2", + "@dadosfera/protospack-v2": "3.11.0-beta.3", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 078e9fc..427077a 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -7,6 +7,7 @@ import { HttpStatus, Inject, UseFilters, + Query, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { @@ -48,10 +49,16 @@ export class AuthController { @Post('/sso/snowflake') @RequireAllPermissions(PERMISSIONS.SNOWFLAKE.permissions.OPEN) @HttpCode(HttpStatus.OK) - async snowflakeSignIn(@User() user: RequestUser) { + async snowflakeSignIn( + @User() user: RequestUser, + @Body('RelayState') relayState: string, + ) { this.logger.info('/auth - snowflakeSignIn'); - return this.authClient.snowflakeSignIn({ userId: user.user_id }); + return this.authClient.snowflakeSignIn({ + userId: user.user_id, + relayState, + }); } @Post('sign-in') From ec418b00e797abc0b609c6a854cb7d1c3ac09ce6 Mon Sep 17 00:00:00 2001 From: Arthur Simas Date: Thu, 4 Aug 2022 11:29:05 -0300 Subject: [PATCH 5/9] FIX: relay state in response --- package-lock.json | 14 +++++++------- package.json | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index b809aa0..199f001 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0-beta.4", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", - "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", + "version": "3.11.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz", + "integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.3.tgz", - "integrity": "sha512-gX+XyJEoGev9X0TmkLjeSjR3AIlWt7ZKkwi+B83nl/aaP4lvxxfUrhms4NJMitQuN87o9PNA8XS2LoGu0iNhZQ==", + "version": "3.11.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.4.tgz", + "integrity": "sha512-TbRiEkSh7TJXHPiwOD+k22gDV2YIkjL6rSlNzqRTpeWo7Qp3gdkNIiWhUKUMeSIJyeJ9Qo1OKyvE8N/MWfRxKQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 598a946..0534f25 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.11.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0-beta.4", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", From 9fbbfc2064a1610fda63929e6a5ec1ea876815e6 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Fri, 5 Aug 2022 16:20:20 -0300 Subject: [PATCH 6/9] FIX: new protospack and better roles error handling --- .vscode/launch.json | 22 ++++++++++++++++ package-lock.json | 14 +++++----- package.json | 4 +-- src/modules/users/users.controller.ts | 26 +++++++++---------- src/modules/users/users.service.ts | 2 +- src/utils/ErrorBuilder.ts | 37 ++++++++++++++++++++++++++- src/utils/errorCodes.ts | 7 ++++- 7 files changed, 87 insertions(+), 25 deletions(-) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..94770e3 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Debug NestJs", + "request": "launch", + "runtimeArgs": [ + "run", + "start:debug" + ], + "runtimeExecutable": "npm", + "skipFiles": [ + "/**" + ], + "type": "node", + "console": "integratedTerminal" + } + ] +} diff --git a/package-lock.json b/package-lock.json index b093142..945e3e1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.10.0", + "@dadosfera/protospack-v2": "^3.11.0-beta.5", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.5", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.5.tgz", + "integrity": "sha512-rzCUlcGaeTgzW1Bu4t5J1w1o9cQjTrRpYT68HJnnb0NZJJ0QzS22MxCwd3S+WgfP5XnelFiw+H9tgffJy2n6lA==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.10.0", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.10.0.tgz", - "integrity": "sha512-XPfRh2R2zZtN/MRxAwbC994xDJftRlnl3w2vqPGMt996tJCpZkedzdH1hHdqer68QDIMM5td0OpW/Gs8K1H07A==", + "version": "3.11.0-beta.5", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.5.tgz", + "integrity": "sha512-rzCUlcGaeTgzW1Bu4t5J1w1o9cQjTrRpYT68HJnnb0NZJJ0QzS22MxCwd3S+WgfP5XnelFiw+H9tgffJy2n6lA==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 3b5ed08..9e7de85 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,8 @@ }, "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", + "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0-beta.5", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -38,7 +40,6 @@ "@nestjs/swagger": "^5.2.1", "axios": "^0.25.0", "cron-parser": "^4.4.0", - "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", "dotenv": "^14.3.2", "elastic-apm-node": "^3.36.0", "helmet": "^5.1.0", @@ -51,7 +52,6 @@ "passport-hubspot-oauth2": "^1.0.3", "passport-mailchimp": "^1.1.0", "protospack": "2.5.2", - "@dadosfera/protospack-v2": "3.10.0", "reflect-metadata": "^0.1.13", "rimraf": "^3.0.2", "rxjs": "^7.5.5", diff --git a/src/modules/users/users.controller.ts b/src/modules/users/users.controller.ts index 3177269..089febf 100644 --- a/src/modules/users/users.controller.ts +++ b/src/modules/users/users.controller.ts @@ -11,7 +11,7 @@ import { Patch, Post, Put, - Req, + Query, UseFilters, } from '@nestjs/common'; import { @@ -172,6 +172,18 @@ export class UsersController { return this.userService.resendInvite({ id }); } + @Delete('role') + @RequireAllPermissions(PERMISSIONS.USERS.permissions.ADMIN) + async unassignRoleToUser( + @User() user: RequestUser, + @Query() request: UnassignRoleToUserReq, + @Headers('dadosfera-lang') language, + ) { + this.logger.info('unassignRoleToUser', { user }); + this.userService.setLanguage(language); + return await this.userService.unassignRoleFromUser(request); + } + @Delete(':id') @RequireAllPermissions(PERMISSIONS.USERS.permissions.ADMIN) @ApiOkResponse({ type: DeleteUserRes }) @@ -210,18 +222,6 @@ export class UsersController { return await this.userService.assignRoleToUser(body); } - @Delete('role') - @RequireAllPermissions(PERMISSIONS.USERS.permissions.ADMIN) - async unassignRoleToUser( - @User() user: RequestUser, - @Req() request: UnassignRoleToUserReq, - @Headers('dadosfera-lang') language, - ) { - this.logger.info('unassignRoleToUser', { user }); - this.userService.setLanguage(language); - return await this.userService.unassignRoleToUser(request); - } - @Patch(':id') @RequireAllPermissions(PERMISSIONS.USERS.permissions.ADMIN) @ApiOkResponse({ type: UpdateUserRes }) diff --git a/src/modules/users/users.service.ts b/src/modules/users/users.service.ts index 0fe40de..7d01115 100644 --- a/src/modules/users/users.service.ts +++ b/src/modules/users/users.service.ts @@ -161,7 +161,7 @@ export class UsersService implements OnModuleInit { return lastValueFrom(this.usersClientService.AssignRoleToUser(body)); } - async unassignRoleToUser(body: UnassignRoleFromUserRequest) { + async unassignRoleFromUser(body: UnassignRoleFromUserRequest) { return lastValueFrom(this.usersClientService.UnassignRoleFromUser(body)); } diff --git a/src/utils/ErrorBuilder.ts b/src/utils/ErrorBuilder.ts index e6c0eb8..40cb049 100644 --- a/src/utils/ErrorBuilder.ts +++ b/src/utils/ErrorBuilder.ts @@ -128,13 +128,46 @@ export function EnrichErrorCode(code: string) { code, }; - case ErrorCodes.ROLE.ALREADY_EXIST: + case ErrorCodes.ROLE.ALREADY_EXISTS: return { statusCode: HttpStatus.BAD_REQUEST, error: 'Grupo já existe', message: 'Não é possível criar um grupo com esse nome', code, }; + + case ErrorCodes.ROLE.ALREADY_EXISTS_PUBLIC: + return { + statusCode: HttpStatus.BAD_REQUEST, + error: 'Grupo já existe', + message: 'Nome conflita com grupo público da Dadosfera', + code, + }; + + case ErrorCodes.ROLE.PERMISSION_ALREADY_GRANTED: + return { + statusCode: HttpStatus.BAD_REQUEST, + error: 'Permissão já inclusa', + message: 'Permissão já consta nesse grupo', + code, + }; + + case ErrorCodes.ROLE.PERMISSION_NOT_GRANTED: + return { + statusCode: HttpStatus.BAD_REQUEST, + error: 'Permissão não inclusa', + message: 'Permissão já consta nesse grupo', + code, + }; + + case ErrorCodes.ROLE.PRIVATE: + return { + statusCode: HttpStatus.FORBIDDEN, + error: 'Não é possivel fazer alterações', + message: 'Você não tem permissão para alterar esse grupo', + code, + }; + case ErrorCodes.ROLE.NOT_FOUND: case ErrorCodes.ROLE.FROM_ANOTHER_CUSTOMER: return { @@ -143,6 +176,7 @@ export function EnrichErrorCode(code: string) { message: 'Grupo solicitado não encontrado', code: ErrorCodes.ROLE.NOT_FOUND, }; + case ErrorCodes.ROLE.CANNOT_EDIT_PUBLIC_ROLE: return { statusCode: HttpStatus.FORBIDDEN, @@ -150,6 +184,7 @@ export function EnrichErrorCode(code: string) { message: 'Você não tem permissão para editar esse grupo', code, }; + case ErrorCodes.USER.NOT_FOUND: return { statusCode: HttpStatus.NOT_FOUND, diff --git a/src/utils/errorCodes.ts b/src/utils/errorCodes.ts index b679510..2f7e16d 100644 --- a/src/utils/errorCodes.ts +++ b/src/utils/errorCodes.ts @@ -14,10 +14,15 @@ export const AUTH = { WEAK_NEW_PASSWORD: 'AUTH.WEAK_NEW_PASSWORD', }; export const ROLE = { - ALREADY_EXIST: 'ROLE.ALREADY_EXISTS', + INVALID_ID: 'ROLE.INVALID_ID', NOT_FOUND: 'ROLE.NOT_FOUND', + ALREADY_EXISTS: 'ROLE.ALREADY_EXISTS', + ALREADY_EXISTS_PUBLIC: 'ROLE.ALREADY_EXISTS_PUBLIC', + PERMISSION_ALREADY_GRANTED: 'ROLE.PERMISSION_ALREADY_GRANTED', + PERMISSION_NOT_GRANTED: 'ROLE.PERMISSION_NOT_GRANTED', FROM_ANOTHER_CUSTOMER: 'ROLE.FROM_ANOTHER_CUSTOMER', CANNOT_EDIT_PUBLIC_ROLE: 'ROLE.CANNOT_EDIT_PUBLIC_ROLE', + PRIVATE: 'ROLE.PRIVATE', }; export const USER = { From 2f006c607c960b99ccdb59e83447c25b453cb588 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Fri, 5 Aug 2022 16:32:10 -0300 Subject: [PATCH 7/9] FIX: add usage on interfaces --- package-lock.json | 14 +++++++------- package.json | 2 +- src/modules/roles/dto/entities.ts | 2 ++ src/modules/roles/roles.service.ts | 1 + 4 files changed, 11 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 945e3e1..148667e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "^3.11.0-beta.5", + "@dadosfera/protospack-v2": "3.11.0-beta.6", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.5", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.5.tgz", - "integrity": "sha512-rzCUlcGaeTgzW1Bu4t5J1w1o9cQjTrRpYT68HJnnb0NZJJ0QzS22MxCwd3S+WgfP5XnelFiw+H9tgffJy2n6lA==", + "version": "3.11.0-beta.6", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.6.tgz", + "integrity": "sha512-I2bkx1qVqE4PkQafQFhtVGhP6gEo93YBFECaz3XuEN5cL4uQsJ/1ciwNvyccdN7qhOuAtk0E/g8KlShJViU+YQ==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.5", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.5.tgz", - "integrity": "sha512-rzCUlcGaeTgzW1Bu4t5J1w1o9cQjTrRpYT68HJnnb0NZJJ0QzS22MxCwd3S+WgfP5XnelFiw+H9tgffJy2n6lA==", + "version": "3.11.0-beta.6", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.6.tgz", + "integrity": "sha512-I2bkx1qVqE4PkQafQFhtVGhP6gEo93YBFECaz3XuEN5cL4uQsJ/1ciwNvyccdN7qhOuAtk0E/g8KlShJViU+YQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index 9e7de85..c37d146 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.5", + "@dadosfera/protospack-v2": "3.11.0-beta.6", "@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 5652684..18b60a3 100644 --- a/src/modules/roles/dto/entities.ts +++ b/src/modules/roles/dto/entities.ts @@ -23,6 +23,8 @@ export class RoleDto { isPublic: boolean; @ApiProperty({ type: () => Customer }) customer?: Customer; + @ApiProperty() + usage: string; } export class CustomerRole extends OmitType(RoleDto, ['customer']) {} diff --git a/src/modules/roles/roles.service.ts b/src/modules/roles/roles.service.ts index ed0b27b..435affb 100644 --- a/src/modules/roles/roles.service.ts +++ b/src/modules/roles/roles.service.ts @@ -28,6 +28,7 @@ interface GetRolesPermissionsName { isPublic?: boolean; createdAt: string; updatedAt: string; + usage: string; } @Injectable() export class RolesService { From fde6d0a74ca76076ea765cb5801198c0a2636842 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Mon, 8 Aug 2022 12:07:43 -0300 Subject: [PATCH 8/9] remove unused imports --- src/modules/auth/auth.controller.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 427077a..41462f3 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -7,7 +7,6 @@ import { HttpStatus, Inject, UseFilters, - Query, } from '@nestjs/common'; import { ApiTags } from '@nestjs/swagger'; import { @@ -23,10 +22,7 @@ import { } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/messages'; import { PERMISSIONS } from 'src/authentication/permissions.enum'; -import { - Authenticated, - RequireAllPermissions, -} from 'src/authentication/authentication.decorator'; +import { RequireAllPermissions } from 'src/authentication/authentication.decorator'; import { AuthClientService } from './auth.service'; import { DadosferaLogger } from '@dadosfera/dadosfera-logs'; import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.filter'; From 17060332fd3ea0d07b8f89441f0377519bb99160 Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Tue, 9 Aug 2022 09:34:52 -0300 Subject: [PATCH 9/9] new protospack release --- package-lock.json | 16 ++++++++-------- package.json | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index 148667e..7f31716 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,8 @@ "license": "UNLICENSED", "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", - "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.6", + "@dadosfera/dadosfera-logs": "1.0.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7", @@ -1723,9 +1723,9 @@ } }, "node_modules/@dadosfera/protospack-v2": { - "version": "3.11.0-beta.6", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.6.tgz", - "integrity": "sha512-I2bkx1qVqE4PkQafQFhtVGhP6gEo93YBFECaz3XuEN5cL4uQsJ/1ciwNvyccdN7qhOuAtk0E/g8KlShJViU+YQ==", + "version": "3.11.0", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0.tgz", + "integrity": "sha512-BPjbH/CrYAH1jGEBNBr3W56frLu9gb9A+i2smKyM5vxVQpZgxZHEjSxfv92d4wtFWW6QnzeyMhcmCqaoVV4w2Q==", "dependencies": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", @@ -12287,9 +12287,9 @@ } }, "@dadosfera/protospack-v2": { - "version": "3.11.0-beta.6", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0-beta.6.tgz", - "integrity": "sha512-I2bkx1qVqE4PkQafQFhtVGhP6gEo93YBFECaz3XuEN5cL4uQsJ/1ciwNvyccdN7qhOuAtk0E/g8KlShJViU+YQ==", + "version": "3.11.0", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/protospack-v2/-/protospack-v2-3.11.0.tgz", + "integrity": "sha512-BPjbH/CrYAH1jGEBNBr3W56frLu9gb9A+i2smKyM5vxVQpZgxZHEjSxfv92d4wtFWW6QnzeyMhcmCqaoVV4w2Q==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/package.json b/package.json index c37d146..c7ef3b4 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,8 @@ }, "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", - "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", - "@dadosfera/protospack-v2": "3.11.0-beta.6", + "@dadosfera/dadosfera-logs": "1.0.0-beta.3", + "@dadosfera/protospack-v2": "3.11.0", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", "@nestjs/common": "^8.4.7",