1515from common import result
1616from common .auth import TokenAuth
1717from common .auth .authentication import has_permissions
18- from common .constants .permission_constants import PermissionConstants , RoleConstants , Permission , Group , Operate
18+ from common .constants .permission_constants import RoleConstants , Permission , Group , Operate , ViewPermission , \
19+ CompareConstants
1920from common .log .log import log
2021from system_manage .api .user_resource_permission import UserResourcePermissionAPI , EditUserResourcePermissionAPI , \
2122 ResourceUserPermissionAPI , ResourceUserPermissionPageAPI , ResourceUserPermissionEditAPI , \
@@ -114,9 +115,18 @@ class WorkspaceResourceUserPermissionView(APIView):
114115 tags = [_ ('Resources authorization' )] # type: ignore
115116 )
116117 @has_permissions (
117- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' ) + '_RESOURCE_AUTHORIZATION' ),
118- operate = Operate .AUTH ),
119- RoleConstants .ADMIN , RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
118+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
119+ operate = Operate .AUTH ,
120+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /ROLE/WORKSPACE_MANAGE" ),
121+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
122+ operate = Operate .AUTH ,
123+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " ),
124+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
125+ [lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
126+ operate = Operate .SELF ,
127+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " )],
128+ CompareConstants .AND ),
129+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
120130 def get (self , request : Request , workspace_id : str , target : str , resource : str ):
121131 return result .success (ResourceUserPermissionSerializer (
122132 data = {'workspace_id' : workspace_id , "target" : target , 'auth_target_type' : resource ,
@@ -139,9 +149,18 @@ def get(self, request: Request, workspace_id: str, target: str, resource: str):
139149 get_operation_object = lambda r , k : get_user_operation_object (k .get ('user_id' ))
140150 )
141151 @has_permissions (
142- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' ) + '_RESOURCE_AUTHORIZATION' ),
143- operate = Operate .AUTH ),
144- RoleConstants .ADMIN , RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
152+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
153+ operate = Operate .AUTH ,
154+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /ROLE/WORKSPACE_MANAGE" ),
155+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
156+ operate = Operate .AUTH ,
157+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " ),
158+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
159+ [lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
160+ operate = Operate .SELF ,
161+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " )],
162+ CompareConstants .AND ),
163+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
145164 def put (self , request : Request , workspace_id : str , target : str , resource : str ):
146165 return result .success (ResourceUserPermissionSerializer (
147166 data = {'workspace_id' : workspace_id , "target" : target , 'auth_target_type' : resource , })
@@ -160,9 +179,18 @@ class Page(APIView):
160179 tags = [_ ('Resources authorization' )] # type: ignore
161180 )
162181 @has_permissions (
163- lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' ) + '_RESOURCE_AUTHORIZATION' ),
164- operate = Operate .AUTH ),
165- RoleConstants .ADMIN , RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
182+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
183+ operate = Operate .AUTH ,
184+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /ROLE/WORKSPACE_MANAGE" ),
185+ lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
186+ operate = Operate .AUTH ,
187+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " ),
188+ ViewPermission ([RoleConstants .USER .get_workspace_role ()],
189+ [lambda r , kwargs : Permission (group = Group (kwargs .get ('resource' )),
190+ operate = Operate .SELF ,
191+ resource_path = f"/WORKSPACE/{ kwargs .get ('workspace_id' )} /{ kwargs .get ('resource' )} /{ kwargs .get ('target' )} " )],
192+ CompareConstants .AND ),
193+ RoleConstants .WORKSPACE_MANAGE .get_workspace_role ())
166194 def get (self , request : Request , workspace_id : str , target : str , resource : str , current_page : int ,
167195 page_size : int ):
168196 return result .success (ResourceUserPermissionSerializer (
0 commit comments