From c29cf5aee16e137a1d0e0b8aa5cf0cb1e2f9168d Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Tue, 20 Sep 2022 17:48:27 -0300 Subject: [PATCH] FIX: sending metadata on creation of users --- package-lock.json | 14 +++++----- package.json | 2 +- src/modules/users/users.controller.ts | 10 ++++++-- src/modules/users/users.service.ts | 37 ++++++++++++++++----------- src/utils/ErrorBuilder.ts | 8 ++++++ src/utils/errorCodes.ts | 1 + 6 files changed, 47 insertions(+), 25 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6957e27..ddf1cd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "license": "UNLICENSED", "dependencies": { "@aws-sdk/client-secrets-manager": "^3.112.0", - "@dadosfera/dadosfera-logs": "^1.0.0-beta.3", + "@dadosfera/dadosfera-logs": "1.0.0-beta.4", "@dadosfera/protospack-v2": "3.17.5", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", @@ -1716,9 +1716,9 @@ } }, "node_modules/@dadosfera/dadosfera-logs": { - "version": "1.0.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/dadosfera-logs/-/dadosfera-logs-1.0.0-beta.3.tgz", - "integrity": "sha512-VuGiQlpDulcl1+FSFoT4/6PA9Pr+DAzbFHAYesz9rPinR46ejG7ZBZk3m86NYqQtgMyurqXvgCR8GPy9FpwqFw==", + "version": "1.0.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/dadosfera-logs/-/dadosfera-logs-1.0.0-beta.4.tgz", + "integrity": "sha512-fFncbNVMbfQa2EFl7NJgmtuSRWHGtmwCbl5p++lSLvGcTIMjLGJ4HAMzSMemQhSxiiYlokdwweb7jJY7Ms62SQ==", "dependencies": { "@elastic/ecs-winston-format": "^1.3.1", "winston": "^3.7.2", @@ -12295,9 +12295,9 @@ } }, "@dadosfera/dadosfera-logs": { - "version": "1.0.0-beta.3", - "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/dadosfera-logs/-/dadosfera-logs-1.0.0-beta.3.tgz", - "integrity": "sha512-VuGiQlpDulcl1+FSFoT4/6PA9Pr+DAzbFHAYesz9rPinR46ejG7ZBZk3m86NYqQtgMyurqXvgCR8GPy9FpwqFw==", + "version": "1.0.0-beta.4", + "resolved": "https://dadosfera-611330257153.d.codeartifact.us-east-1.amazonaws.com:443/npm/dadosfera-npm/@dadosfera/dadosfera-logs/-/dadosfera-logs-1.0.0-beta.4.tgz", + "integrity": "sha512-fFncbNVMbfQa2EFl7NJgmtuSRWHGtmwCbl5p++lSLvGcTIMjLGJ4HAMzSMemQhSxiiYlokdwweb7jJY7Ms62SQ==", "requires": { "@elastic/ecs-winston-format": "^1.3.1", "winston": "^3.7.2", diff --git a/package.json b/package.json index 5cc5dac..fe3626e 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/dadosfera-logs": "1.0.0-beta.4", "@dadosfera/protospack-v2": "3.17.5", "@grpc/grpc-js": "^1.6.7", "@grpc/proto-loader": "^0.6.13", diff --git a/src/modules/users/users.controller.ts b/src/modules/users/users.controller.ts index 52b1892..0f22624 100644 --- a/src/modules/users/users.controller.ts +++ b/src/modules/users/users.controller.ts @@ -45,6 +45,7 @@ import { UserByCustomer, } from './dtos/entities'; import { UsersService } from './users.service'; +import { Metadata } from '@grpc/grpc-js'; // TODO GET de hierarquias e do PATCH em usuário @ApiTags('Users') @@ -141,9 +142,12 @@ export class UsersController { @Body() body: CreateUserReq, @Headers('dadosfera-lang') language, ) { + const meta = new Metadata(); + meta.add('access_token', user.access_token); this.logger.info('createUser', { user }); this.userService.setLanguage(language); - return await this.userService.createUser(body); + + return await this.userService.createUser(body, meta); } @Post('batch') @@ -154,9 +158,11 @@ export class UsersController { @Body() body: BatchCreateUserReq, @Headers('dadosfera-lang') language, ) { + const meta = new Metadata(); + meta.add('access_token', user.access_token); this.logger.info('batchCreateUser', { user }); this.userService.setLanguage(language); - return await this.userService.batchCreateUser(body); + return await this.userService.batchCreateUser(body, meta); } @Post(':id/resend-invite') diff --git a/src/modules/users/users.service.ts b/src/modules/users/users.service.ts index 0e07647..e501f05 100644 --- a/src/modules/users/users.service.ts +++ b/src/modules/users/users.service.ts @@ -27,6 +27,7 @@ import { LanguageEnum } from 'src/utils/languages.enum'; import { UserByCustomer } from '@dadosfera/protospack-v2/dist/lib/Duc/interfaces/entities'; import { EnrichErrorCode } from 'src/utils/ErrorBuilder'; import { DucClient } from '../duc/client.config'; +import { Metadata } from '@grpc/grpc-js'; @Injectable() export class UsersService implements OnModuleInit { @@ -83,18 +84,21 @@ export class UsersService implements OnModuleInit { return { user: this.adjustUsersPayload([user])[0] }; } - async createUser(req: CreateUserReq) { + async createUser(req: CreateUserReq, meta?: Metadata) { const { email, department, hierarchy, jobTitle, name, roleNames } = req; const { user } = await lastValueFrom( - this.usersClientService.UserCreate({ - email, - hierarchy, - name, - roleIds: [], - department, - jobTitle, - roleNames, - }), + this.usersClientService.UserCreate( + { + email, + hierarchy, + name, + roleIds: [], + department, + jobTitle, + roleNames, + }, + meta, + ), ); return { user: this.adjustUsersPayload([user])[0] }; } @@ -134,7 +138,8 @@ export class UsersService implements OnModuleInit { return { user: this.adjustUsersPayload([user])[0] }; } - async batchCreateUser({ users }: BatchCreateUserReq) { + async batchCreateUser(req: BatchCreateUserReq, meta?: Metadata) { + const { users } = req; const usersToCreate: UserCreateRequest[] = users.map( ({ roleNames, email, department, hierarchy, jobTitle, name }) => ({ roleNames, @@ -147,14 +152,16 @@ export class UsersService implements OnModuleInit { }), ); const { errorUsers, usersCreated } = await lastValueFrom( - this.usersClientService.UserBatchCreate({ - users: usersToCreate, - }), + this.usersClientService.UserBatchCreate( + { + users: usersToCreate, + }, + meta, + ), ); return { usersCreated: this.adjustUsersPayload(usersCreated), - // mapping error code to message errorUsers: errorUsers.map(({ user, error }) => ({ user, error: EnrichErrorCode(error).message, diff --git a/src/utils/ErrorBuilder.ts b/src/utils/ErrorBuilder.ts index 747d726..49fcf96 100644 --- a/src/utils/ErrorBuilder.ts +++ b/src/utils/ErrorBuilder.ts @@ -185,6 +185,14 @@ export function EnrichErrorCode(code: string) { code, }; + case ErrorCodes.USER.NOT_CREATED: + return { + statusCode: HttpStatus.INTERNAL_SERVER_ERROR, + error: 'Ocorreu um erro ao criar seu usúario', + message: 'Tente novamente ou entre em contato com o suporte', + code, + }; + case ErrorCodes.USER.NOT_FOUND: return { statusCode: HttpStatus.NOT_FOUND, diff --git a/src/utils/errorCodes.ts b/src/utils/errorCodes.ts index 8a44ae8..f88746a 100644 --- a/src/utils/errorCodes.ts +++ b/src/utils/errorCodes.ts @@ -31,6 +31,7 @@ export const USER = { ALREADY_EXISTS: 'USER.ALREADY_EXISTS', ROLE_ALREADY_ASSIGNED: 'USER.ROLE_ALREADY_ASSIGNED', ROLE_NOT_ASSIGNED: 'USER.ROLE_NOT_ASSIGNED', + NOT_CREATED: 'USER.NOT_CREATED', }; export const CUSTOMER = {