Skip to content

Commit 5738af7

Browse files
committed
fix: enhance permission handling by adding WORKSPACE_MANAGE role to user group and workspace access
1 parent 7c7fe64 commit 5738af7

1 file changed

Lines changed: 27 additions & 16 deletions

File tree

‎apps/users/views/system_user_group.py‎

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@
1313
from common.log.log import log
1414
from models_provider.api.model import DefaultModelResponse
1515
from users.api.user_group import (
16-
AddMemberApi, CreateUserGroupApi, DeleteUserGroupApi,
17-
RemoveMemberApi, UserGroupListApi, UserGroupListPageApi
16+
AddMemberApi,
17+
CreateUserGroupApi,
18+
DeleteUserGroupApi,
19+
RemoveMemberApi,
20+
UserGroupListApi,
21+
UserGroupListPageApi,
1822
)
1923
from users.models.user_group import SystemUserGroup
2024
from users.serializers.user_group import (
2125
SystemUserGroupCreateSerializer,
2226
UserGroupAddMemberSerializer,
2327
UserGroupRemoveMemberSerializer,
24-
UserGroupListPageSerializer
28+
UserGroupListPageSerializer,
2529
)
2630

2731

@@ -52,9 +56,9 @@ class SystemUserGroupView(APIView):
5256
responses=CreateUserGroupApi.get_response(),
5357
tags=["IAM/System User Group"],
5458
)
55-
@has_permissions(PermissionConstants.SYSTEM_USER_GROUP_CREATE,
56-
PermissionConstants.SYSTEM_USER_GROUP_EDIT,
57-
RoleConstants.ADMIN)
59+
@has_permissions(
60+
PermissionConstants.SYSTEM_USER_GROUP_CREATE, PermissionConstants.SYSTEM_USER_GROUP_EDIT, RoleConstants.ADMIN
61+
)
5862
@log(
5963
menu="IAM/System User Group",
6064
operate="Create or update System User Group",
@@ -79,11 +83,9 @@ def post(self, request: Request, workspace_id: str):
7983
responses=UserGroupListApi.get_response(),
8084
tags=["IAM/System User Group"],
8185
)
82-
@has_permissions(PermissionConstants.SYSTEM_USER_GROUP_READ, RoleConstants.ADMIN)
86+
@has_permissions(PermissionConstants.SYSTEM_USER_GROUP_READ, RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE)
8387
def get(self, request: Request, workspace_id: str):
84-
return result.success(SystemUserGroupCreateSerializer.Query(
85-
data={'workspace_id': workspace_id}
86-
).list())
88+
return result.success(SystemUserGroupCreateSerializer.Query(data={"workspace_id": workspace_id}).list())
8789

8890
class Delete(APIView):
8991
authentication_classes = [TokenAuth]
@@ -106,7 +108,8 @@ class Delete(APIView):
106108
def delete(self, request: Request, workspace_id, user_group_id: str):
107109
return result.success(
108110
SystemUserGroupCreateSerializer.UserGroupDeleteSerializer(
109-
data={"id": user_group_id, "workspace_id": workspace_id}).delete()
111+
data={"id": user_group_id, "workspace_id": workspace_id}
112+
).delete()
110113
)
111114

112115
class AddMember(APIView):
@@ -130,8 +133,11 @@ class AddMember(APIView):
130133
def post(self, request: Request, workspace_id: str, user_group_id: str):
131134
return result.success(
132135
UserGroupAddMemberSerializer(
133-
data={"id": user_group_id, "workspace_id": workspace_id,
134-
"user_ids": request.data.get("user_ids", [])}
136+
data={
137+
"id": user_group_id,
138+
"workspace_id": workspace_id,
139+
"user_ids": request.data.get("user_ids", []),
140+
}
135141
).add_member()
136142
)
137143

@@ -156,8 +162,11 @@ class RemoveMember(APIView):
156162
def delete(self, request: Request, workspace_id: str, user_group_id: str):
157163
return result.success(
158164
UserGroupRemoveMemberSerializer(
159-
data={"id": user_group_id, "workspace_id": workspace_id,
160-
"group_relation_ids": request.data.get("group_relation_ids", [])}
165+
data={
166+
"id": user_group_id,
167+
"workspace_id": workspace_id,
168+
"group_relation_ids": request.data.get("group_relation_ids", []),
169+
}
161170
).remove_member()
162171
)
163172

@@ -173,7 +182,9 @@ class UserList(APIView):
173182
parameters=UserGroupListPageApi.get_parameters(),
174183
responses=UserGroupListPageApi.get_response(),
175184
)
176-
@has_permissions(PermissionConstants.SYSTEM_USER_GROUP_READ, RoleConstants.ADMIN)
185+
@has_permissions(
186+
PermissionConstants.SYSTEM_USER_GROUP_READ, RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE
187+
)
177188
def get(self, request: Request, workspace_id: str, user_group_id: str, current_page: int, page_size: int):
178189
d = UserGroupListPageSerializer.Query(
179190
data={

0 commit comments

Comments
 (0)