FEAT: new routes do add or remove permisisons from role

This commit is contained in:
Gabriel Rosa
2022-07-12 12:11:03 -03:00
parent b9612609d9
commit 398360fadb
3 changed files with 73 additions and 4 deletions
+29 -4
View File
@@ -1,12 +1,15 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { Permission } from 'src/modules/permissions/dto/entities';
import { UserWithoutRoles } from 'src/modules/users/dtos/entities';
export class Role {
@ApiPropertyOptional({ type: [Permission] })
permissions: Permission[];
@ApiProperty()
id: string;
@ApiProperty()
name: string;
@ApiPropertyOptional({ type: () => [Permission] })
permissions: Permission[];
@ApiPropertyOptional({ type: () => [UserWithoutRoles] })
users: UserWithoutRoles[];
@ApiProperty()
createdAt: string;
@ApiProperty()
@@ -39,6 +42,28 @@ export class CreateRoleReq {
description: string;
}
export class CreateRoleRes {
@ApiProperty({ type: [Role] })
roles: Role[];
@ApiProperty()
role: Role;
}
export class AssignPermissionsToRoleReq {
@ApiProperty()
roleId: string;
@ApiProperty()
permissionIds: string[];
}
export class AssignPermissionsToRoleRes {
@ApiProperty()
role: Role;
}
export class UnassignPermissionsToRoleReq {
@ApiProperty()
roleId: string;
@ApiProperty()
permissionIds: string[];
}
export class UnassignPermissionsToRoleRes {
@ApiProperty()
role: Role;
}
+22
View File
@@ -6,6 +6,7 @@ import {
Inject,
Param,
Post,
Put,
Query,
} from '@nestjs/common';
import { ApiResponse, ApiTags } from '@nestjs/swagger';
@@ -13,10 +14,14 @@ import { User } from 'src/authentication/user.decorator';
import { DadosferaLogger } from 'dadosfera-logs';
import { RolesService } from './roles.service';
import {
AssignPermissionsToRoleReq,
AssignPermissionsToRoleRes,
CreateRoleReq,
CreateRoleRes,
GetRolesByCustomerReq,
GetRolesByCustomerRes,
UnassignPermissionsToRoleReq,
UnassignPermissionsToRoleRes,
} from './dto/entities';
@ApiTags('Roles')
@@ -50,4 +55,21 @@ export class RolesController {
this.logger.info('deleteRole', { user });
return await this.rolesService.removeRole(id);
}
@Put('permissions')
@ApiResponse({ type: AssignPermissionsToRoleRes })
async assignPermissionsToRole(
@User() user,
@Body() body: AssignPermissionsToRoleReq,
) {
this.logger.info('assignPermissionsToRole', { user });
}
@Delete('permissions')
@ApiResponse({ type: UnassignPermissionsToRoleRes })
async unassignPermissionsToRole(
@User() user,
@Body() body: UnassignPermissionsToRoleReq,
) {
this.logger.info('unassignPermissionsToRole', { user });
}
}
+22
View File
@@ -40,6 +40,28 @@ export class User {
@ApiProperty()
updatedAt: string;
}
export class UserWithoutRoles {
@ApiProperty()
id: string;
@ApiProperty()
name: string;
@ApiProperty()
email: string;
@ApiProperty()
jobTitle: string;
@ApiProperty()
department: string;
@ApiProperty()
hierarchy: number;
@ApiProperty()
customer: Customer;
@ApiProperty()
mfaStatus: string;
@ApiProperty()
createdAt: string;
@ApiProperty()
updatedAt: string;
}
export class UserByCustomer {
@ApiProperty({ type: [Role] })
roles: Role[];