From de57bfed1e08c66d4d9041000c763bba26e572bd Mon Sep 17 00:00:00 2001 From: Gabriel Rosa Date: Thu, 14 Jul 2022 12:53:00 -0300 Subject: [PATCH] FEAT: new roles routes working --- package-lock.json | 4 +-- src/main.ts | 1 + src/modules/roles/dto/entities.ts | 16 ++++----- src/modules/roles/roles.controller.ts | 19 ++++++----- src/modules/roles/roles.service.ts | 47 +++++++++++++++++++-------- 5 files changed, 55 insertions(+), 32 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5e807ab..2f0c031 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9017,7 +9017,7 @@ "node_modules/protospack-v2": { "version": "0.0.0", "resolved": "file:../protospack-v2/protospack-v2-0.0.0.tgz", - "integrity": "sha512-/Pmor5eTfl0kRUC0uMsqsMojLnl3j5vMHhO9CYYQ9/5bYWSvq40+NovS9msyuqNsTW2oAYpGvMNDm6zeaV4Ciw==", + "integrity": "sha512-kj/mJbme5CULhsRW4fyXdRUtJKzG5Q5zVYg4BSYMRovHi/jcZUgOIXWwOn0rnqLlMlzdl2msx0S9mA7b62IQzQ==", "license": "ISC", "dependencies": { "@grpc/grpc-js": "^1.6.7", @@ -17247,7 +17247,7 @@ }, "protospack-v2": { "version": "file:../protospack-v2/protospack-v2-0.0.0.tgz", - "integrity": "sha512-/Pmor5eTfl0kRUC0uMsqsMojLnl3j5vMHhO9CYYQ9/5bYWSvq40+NovS9msyuqNsTW2oAYpGvMNDm6zeaV4Ciw==", + "integrity": "sha512-kj/mJbme5CULhsRW4fyXdRUtJKzG5Q5zVYg4BSYMRovHi/jcZUgOIXWwOn0rnqLlMlzdl2msx0S9mA7b62IQzQ==", "requires": { "@grpc/grpc-js": "^1.6.7", "rxjs": "^7.5.5", diff --git a/src/main.ts b/src/main.ts index 788cf4c..7e54651 100644 --- a/src/main.ts +++ b/src/main.ts @@ -42,6 +42,7 @@ async function bootstrap() { .setDescription('Documentation for Maestro gateway') .setVersion('1.0') .addBearerAuth() + .addServer('http://127.0.0.1:3333') .build(); const document = SwaggerModule.createDocument(app, config); diff --git a/src/modules/roles/dto/entities.ts b/src/modules/roles/dto/entities.ts index c0ecdd2..70e9e8f 100644 --- a/src/modules/roles/dto/entities.ts +++ b/src/modules/roles/dto/entities.ts @@ -55,24 +55,24 @@ export class CreateRoleRes { role: CustomerRole; } -export class AssignPermissionsToRoleReq { +export class GrantPermissionsToRoleReq { @ApiProperty() roleId: string; @ApiProperty() - permissionIds: string[]; + permissionIds: number[]; } -export class AssignPermissionsToRoleRes { +export class GrantPermissionsToRoleRes { @ApiProperty() role: Role; } -export class UnassignPermissionsToRoleReq { +export class RevokePermissionsFromRoleReq { @ApiProperty() roleId: string; @ApiProperty() - permissionIds: string[]; + permissionIds: number[]; } -export class UnassignPermissionsToRoleRes { +export class RevokePermissionsFromRoleRes { @ApiProperty() role: Role; } @@ -83,9 +83,9 @@ export class UpdateRoleReq { @ApiPropertyOptional() description: string; @ApiPropertyOptional() - userIds: string; + userIds: string[]; @ApiPropertyOptional() - permissionIds: string; + permissionIds: number[]; } export class UpdateRoleRes { diff --git a/src/modules/roles/roles.controller.ts b/src/modules/roles/roles.controller.ts index d249773..53771d7 100644 --- a/src/modules/roles/roles.controller.ts +++ b/src/modules/roles/roles.controller.ts @@ -16,14 +16,14 @@ import { RequestUser, User } from 'src/authentication/user.decorator'; import { DadosferaLogger } from 'dadosfera-logs'; import { RolesService } from './roles.service'; import { - AssignPermissionsToRoleReq as grantPermissionsToRoleReq, - AssignPermissionsToRoleRes as GrantPermissionsToRoleRes, + GrantPermissionsToRoleReq, + GrantPermissionsToRoleRes, CreateRoleReq, CreateRoleRes, GetRolesByCustomerReq, GetRolesByCustomerRes, - UnassignPermissionsToRoleReq as RevokePermissionsToRoleReq, - UnassignPermissionsToRoleRes as RevokePermissionsToRoleRes, + RevokePermissionsFromRoleReq, + RevokePermissionsFromRoleRes, UpdateRoleReq, UpdateRoleRes, } from './dto/entities'; @@ -73,20 +73,20 @@ export class RolesController { @ApiOkResponse({ type: GrantPermissionsToRoleRes }) async grantPermissionsToRole( @User() user: RequestUser, - @Body() body: grantPermissionsToRoleReq, + @Body() body: GrantPermissionsToRoleReq, ) { this.logger.info('grantPermissionsToRole', { user }); return await this.rolesService.grantPermissionsToRole(body); } @Delete('permissions') - @ApiOkResponse({ type: RevokePermissionsToRoleRes }) - async revokePermissionsToRole( + @ApiOkResponse({ type: RevokePermissionsFromRoleRes }) + async revokePermissionsFromRole( @User() user: RequestUser, - @Body() body: RevokePermissionsToRoleReq, + @Body() body: RevokePermissionsFromRoleReq, ) { this.logger.info('revokePermissionsToRole', { user }); - return await this.rolesService.revokePermissionToRole(body); + return await this.rolesService.revokePermissionFromRole(body); } @Patch(':id') @@ -97,5 +97,6 @@ export class RolesController { @Body() body: UpdateRoleReq, ) { this.logger.info('updateRole', { user }); + return this.rolesService.updateRole(id, body); } } diff --git a/src/modules/roles/roles.service.ts b/src/modules/roles/roles.service.ts index 142021d..a8197ee 100644 --- a/src/modules/roles/roles.service.ts +++ b/src/modules/roles/roles.service.ts @@ -1,16 +1,18 @@ import { BadRequestException, Inject, Injectable } from '@nestjs/common'; import { ProtoServices } from 'protospack-v2/dist/lib/Duc'; import { RolesProtoService } from 'protospack-v2/dist/lib/Duc/interfaces/write-service'; -import { CreateRoleReq, GetRolesByCustomerReq, Role } from './dto/entities'; +import { + CreateRoleReq, + GetRolesByCustomerReq, + GrantPermissionsToRoleReq, + RevokePermissionsFromRoleReq, + Role, + UpdateRoleReq, +} from './dto/entities'; import { DadosferaLogger } from 'dadosfera-logs'; import { ClientGrpc } from '@nestjs/microservices'; import { lastValueFrom } from 'rxjs'; import { PermissionsService } from '../permissions/permissions.service'; -import { - GrantPermissionsToRoleRequest, - RevokePermissionsFromRoleRequest, - RoleUpdateRequest, -} from 'protospack-v2/dist/lib/Duc/interfaces/messages'; @Injectable() export class RolesService { @@ -78,29 +80,48 @@ export class RolesService { async grantPermissionsToRole({ roleId, permissionIds, - }: GrantPermissionsToRoleRequest) { + }: GrantPermissionsToRoleReq) { const role = await lastValueFrom( this.rolesClientService.GrantPermissionsToRole({ - permissionIds, + permissionIds: [], roleId, + permissionReqIds: permissionIds, }), ); + + const [roleTreated] = this.getRolesPermissionsName([role.role]); + return { role: roleTreated }; } - async revokePermissionToRole({ + async revokePermissionFromRole({ roleId, permissionIds, - }: RevokePermissionsFromRoleRequest) { + }: RevokePermissionsFromRoleReq) { const role = await lastValueFrom( this.rolesClientService.RevokePermissionsFromRole({ - permissionIds, + permissionIds: [], roleId, + permissionReqIds: permissionIds, }), ); + const [roleTreated] = this.getRolesPermissionsName([role.role]); + return { role: roleTreated }; } - async updateRole(req: RoleUpdateRequest) { - const role = await lastValueFrom(this.rolesClientService.RoleUpdate(req)); + async updateRole(id: string, req: UpdateRoleReq) { + const { description, name, permissionIds, userIds } = req; + const role = await lastValueFrom( + this.rolesClientService.RoleUpdate({ + id, + description, + name, + permissionIds: [], + permissionReqIds: permissionIds, + userIds, + }), + ); + const [roleTreated] = this.getRolesPermissionsName([role.role]); + return { role: roleTreated }; } getRolesPermissionsName(roles: Role[]) { for (const role of roles) {