FEAT: new roles routes working

This commit is contained in:
Gabriel Rosa
2022-07-14 12:53:00 -03:00
parent 14cfc46492
commit de57bfed1e
5 changed files with 55 additions and 32 deletions
+2 -2
View File
@@ -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",
+1
View File
@@ -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);
+8 -8
View File
@@ -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 {
+10 -9
View File
@@ -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);
}
}
+34 -13
View File
@@ -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) {