Skip to content

Commit c93fb88

Browse files
authored
Revert "feat: change users role and permissions (#475)" (#476)
This reverts commit e32957e.
1 parent e32957e commit c93fb88

9 files changed

+1
-257
lines changed

backend/migrations/1733147745970-update-role-and-permissions.ts

Lines changed: 0 additions & 45 deletions
This file was deleted.

backend/migrations/1733148028374-add-manage-permissions.ts

Lines changed: 0 additions & 50 deletions
This file was deleted.

backend/postman/CC Portal develop.postman_collection.json

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"info": {
3-
"_postman_id": "2b1baa78-48e2-4671-aff8-da723a452325",
3+
"_postman_id": "76b45677-bce1-4b13-8de8-db1a76d8e827",
44
"name": "CC Portal develop",
55
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
66
"_exporter_id": "20133713"
@@ -278,41 +278,6 @@
278278
}
279279
},
280280
"response": []
281-
},
282-
{
283-
"name": "Change user role and permissions",
284-
"request": {
285-
"method": "PATCH",
286-
"header": [
287-
{
288-
"key": "Authorization",
289-
"value": "{{accessToken}}",
290-
"type": "text"
291-
}
292-
],
293-
"body": {
294-
"mode": "raw",
295-
"raw": "{\n \"user_id\": \"1c3b9794-95c1-4c78-9948-b057996763f6\",\n \"new_role\": \"admin\",\n \"new_permissions\": [\"manage_cc_members\"]\n}",
296-
"options": {
297-
"raw": {
298-
"language": "json"
299-
}
300-
}
301-
},
302-
"url": {
303-
"raw": "{{base-url}}/api/users/{{userId}}/role-permissions",
304-
"host": [
305-
"{{base-url}}"
306-
],
307-
"path": [
308-
"api",
309-
"users",
310-
"{{userId}}",
311-
"role-permissions"
312-
]
313-
}
314-
},
315-
"response": []
316281
}
317282
]
318283
},

backend/src/users/api/request/update-role-and-permissions.request.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

backend/src/users/api/users.controller.ts

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ import { ToggleStatusRequest } from './request/toggle-status.request';
4343
import { ApiConditionalExcludeEndpoint } from 'src/common/decorators/api-conditional-exclude-endpoint.decorator';
4444
import { Permissions } from 'src/auth/guard/permission.decorator';
4545
import { RemoveUserRequest } from './request/remove-user.request';
46-
import { UpdateRoleAndPermissionsRequest } from './request/update-role-and-permissions.request';
4746

4847
@ApiTags('Users')
4948
@Controller('users')
@@ -308,38 +307,4 @@ export class UsersController {
308307
message: 'User deleted successfully',
309308
};
310309
}
311-
312-
@ApiConditionalExcludeEndpoint()
313-
@ApiBearerAuth('JWT-auth')
314-
@ApiOperation({
315-
summary: 'Update user role and permissions by superadmin',
316-
})
317-
@ApiParam({
318-
name: 'id',
319-
required: true,
320-
description: 'Identification number of the user',
321-
type: String,
322-
})
323-
@ApiBody({ type: UpdateRoleAndPermissionsRequest })
324-
@ApiResponse({
325-
status: 200,
326-
description: 'User updated successfully.',
327-
type: UserResponse,
328-
})
329-
@ApiResponse({ status: 400, description: 'Bad request' })
330-
@ApiResponse({ status: 403, description: 'Forbidden resource' })
331-
@ApiResponse({ status: 404, description: 'Not Found' })
332-
@ApiResponse({ status: 500, description: 'Internal server error' })
333-
@HttpCode(200)
334-
@Patch(':id/role-permissions')
335-
@Permissions(PermissionEnum.MANAGE_ROLES_AND_PERMISSIONS)
336-
@UseGuards(JwtAuthGuard, UserPathGuard, PermissionGuard)
337-
async updateUserRoleAndPermissions(
338-
@Param('id', ParseUUIDPipe) id: string,
339-
@Body() updateRoleAndPermissionsRequest: UpdateRoleAndPermissionsRequest,
340-
): Promise<UserResponse> {
341-
return await this.usersFacade.updateUserRoleAndPermissions(
342-
updateRoleAndPermissionsRequest,
343-
);
344-
}
345310
}

backend/src/users/entities/user.entity.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,14 +80,12 @@ export class User extends CommonEntity {
8080
@Index('users_role_id_idx')
8181
@ManyToOne(() => Role, (role) => role.users, {
8282
eager: true,
83-
onUpdate: 'CASCADE',
8483
})
8584
@JoinColumn({ name: 'role_id' })
8685
role: Role;
8786

8887
@ManyToMany(() => Permission, (permission) => permission.users, {
8988
eager: true,
90-
onUpdate: 'CASCADE',
9189
})
9290
@JoinTable({
9391
name: 'user_permissions',

backend/src/users/enums/permission.enum.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,4 @@ export enum PermissionEnum {
22
MANAGE_CC_MEMBERS = 'manage_cc_members',
33
ADD_CONSTITUTION = 'add_constitution_version',
44
MANAGE_ADMINS = 'manage_admins',
5-
MANAGE_ROLES_AND_PERMISSIONS = 'manage_roles_and_permissions',
65
}

backend/src/users/facade/users.facade.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { PaginationDtoMapper } from 'src/util/pagination/mapper/pagination.mappe
2020
import { PermissionEnum } from '../enums/permission.enum';
2121
import { ToggleStatusRequest } from '../api/request/toggle-status.request';
2222
import { UserStatusEnum } from '../enums/user-status.enum';
23-
import { UpdateRoleAndPermissionsRequest } from '../api/request/update-role-and-permissions.request';
2423
@Injectable()
2524
export class UsersFacade {
2625
private logger = new Logger(UsersService.name);
@@ -132,13 +131,4 @@ export class UsersFacade {
132131
);
133132
}
134133
}
135-
136-
async updateUserRoleAndPermissions(
137-
updateRoleAndPermissionsRequest: UpdateRoleAndPermissionsRequest,
138-
): Promise<UserResponse> {
139-
const user = await this.usersService.updateUserRoleAndPermissions(
140-
updateRoleAndPermissionsRequest,
141-
);
142-
return UserMapper.mapUserDtoToResponse(user);
143-
}
144134
}

backend/src/users/services/users.service.ts

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import { PaginationEntityMapper } from 'src/util/pagination/mapper/pagination.ma
2828
import { Paginator } from 'src/util/pagination/paginator';
2929
import { RoleFactory } from '../role/role.factory';
3030
import { PermissionEnum } from '../enums/permission.enum';
31-
import { UpdateRoleAndPermissionsRequest } from '../api/request/update-role-and-permissions.request';
3231

3332
@Injectable()
3433
export class UsersService {
@@ -293,48 +292,4 @@ export class UsersService {
293292
const user = await this.findEntityById(userId);
294293
await this.userRepository.remove(user);
295294
}
296-
297-
async updateUserRoleAndPermissions(
298-
updateRoleAndPermissionsRequest: UpdateRoleAndPermissionsRequest,
299-
): Promise<UserDto> {
300-
const user = await this.findEntityById(
301-
updateRoleAndPermissionsRequest.userId,
302-
);
303-
if (user.role.code === RoleEnum.SUPER_ADMIN) {
304-
throw new ForbiddenException(`You have no permission for this action`);
305-
}
306-
const role = await this.findRoleByCode(
307-
updateRoleAndPermissionsRequest.newRole,
308-
);
309-
this.validatePermissionsForRole(
310-
role,
311-
updateRoleAndPermissionsRequest.newPermissions,
312-
);
313-
314-
user.role = role;
315-
if (updateRoleAndPermissionsRequest.newPermissions) {
316-
const newPermissions = await this.getUserPermissions(
317-
updateRoleAndPermissionsRequest.newPermissions,
318-
);
319-
user.permissions = newPermissions;
320-
}
321-
await this.userRepository.save(user);
322-
323-
return UserMapper.userToDto(user);
324-
}
325-
326-
private validatePermissionsForRole(role: Role, permissions: string[]): void {
327-
if (role.code === 'admin' && permissions.length === 0) {
328-
throw new BadRequestException(`At least one permission is required`);
329-
}
330-
const allowedPermissions = role.permissions?.map(
331-
(permission) => permission.code,
332-
);
333-
const isAllowed = permissions.every((perm) =>
334-
allowedPermissions.includes(perm),
335-
);
336-
if (!isAllowed) {
337-
throw new BadRequestException(`Permissions aren't allowed for this role`);
338-
}
339-
}
340295
}

0 commit comments

Comments
 (0)