Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions apps/locales/en_US/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -9441,4 +9441,13 @@ msgid "Add members to System User Group"
msgstr ""

msgid "Remove members from System User Group"
msgstr ""

msgid "Get user group authorization status of resource"
msgstr ""

msgid "Edit user group authorization status of resource"
msgstr ""

msgid "Get user group authorization status of resource by page"
msgstr ""
9 changes: 9 additions & 0 deletions apps/locales/zh_CN/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -9566,3 +9566,12 @@ msgstr "添加成员到工作空间用户组"

msgid "Remove members from Workspace User Group"
msgstr "从工作空间用户组中移除成员"

msgid "Get user group authorization status of resource"
msgstr "获取用户组对资源的授权状态"

msgid "Edit user group authorization status of resource"
msgstr "编辑用户组对资源的授权状态"

msgid "Get user group authorization status of resource by page"
msgstr "分页获取用户组对资源的授权状态"
11 changes: 10 additions & 1 deletion apps/locales/zh_Hant/LC_MESSAGES/django.po
Original file line number Diff line number Diff line change
Expand Up @@ -9564,4 +9564,13 @@ msgid "Add members to Workspace User Group"
msgstr "添加成員到工作空間用戶組"

msgid "Remove members from Workspace User Group"
msgstr "從工作空間用戶組中移除成員"
msgstr "從工作空間用戶組中移除成員"

msgid "Get user group authorization status of resource"
msgstr "獲取用戶組對資源的授權狀態"

msgid "Edit user group authorization status of resource"
msgstr "編輯用戶組對資源的授權狀態"

msgid "Get user group authorization status of resource by page"
msgstr "分頁獲取用戶組對資源的授權狀態"
66 changes: 33 additions & 33 deletions apps/system_manage/views/user_group_resource_permission.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
UserResourcePermissionPageAPI
from system_manage.serializers.user_group_resource_permission import UserGroupResourcePermissionSerializer, \
ResourceUserGroupPermissionSerializer
from system_manage.serializers.user_resource_permission import UserResourcePermissionSerializer, \
ResourceUserPermissionSerializer
from users.models.user_group import SystemUserGroup


Expand All @@ -49,7 +47,7 @@ class WorkSpaceUserGroupResourcePermissionView(APIView):
tags=[_('Resources authorization')] # type: ignore
)
@has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_RESOURCE_PERMISSION'),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_GROUP_RESOURCE_PERMISSION'),
operate=Operate.READ),
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id: str, user_group_id: str, resource: str):
Expand All @@ -71,7 +69,7 @@ def get(self, request: Request, workspace_id: str, user_group_id: str, resource:
get_operation_object=lambda r, k: get_user_operation_object(k.get('user_group_id'))
)
@has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_RESOURCE_PERMISSION'),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_GROUP_RESOURCE_PERMISSION'),
operate=Operate.EDIT),
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def put(self, request: Request, workspace_id: str, user_group_id: str, resource: str):
Expand All @@ -93,25 +91,25 @@ class Page(APIView):
tags=[_('Resources authorization')] # type: ignore
)
@has_permissions(
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_RESOURCE_PERMISSION'),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource') + '_WORKSPACE_USER_GROUP_RESOURCE_PERMISSION'),
operate=Operate.READ),
RoleConstants.ADMIN, RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id: str, user_group_id: str, resource: str, current_page: str,
page_size: str):
return result.success(UserGroupResourcePermissionSerializer(
data={'workspace_id': workspace_id, 'user_group_id': user_group_id, 'auth_target_type': resource}
).page({'name': request.query_params.get('name'),
'permission': request.query_params.getlist('permission[]')}, current_page, page_size, request.user))
).page({'name': request.query_params.get('name'),
'permission': request.query_params.getlist('permission[]')}, current_page, page_size, request.user))


class WorkspaceResourceUserGroupPermissionView(APIView):
authentication_classes = [TokenAuth]

@extend_schema(
methods=['GET'],
description=_('Get user authorization status of resource'),
summary=_('Get user authorization status of resource'),
operation_id=_('Get user authorization status of resource'), # type: ignore
description=_('Get user group authorization status of resource'),
summary=_('Get user group authorization status of resource'),
operation_id=_('Get user group authorization status of resource'), # type: ignore
parameters=ResourceUserPermissionAPI.get_parameters(),
responses=ResourceUserPermissionAPI.get_response(),
tags=[_('Resources authorization')] # type: ignore
Expand All @@ -122,32 +120,32 @@ class WorkspaceResourceUserGroupPermissionView(APIView):
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}"),
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}"),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER','')),
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER', '')),
operate=Operate.SELF,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}")],
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}")],
CompareConstants.AND),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id: str, target: str, resource: str):
return result.success(UserGroupResourcePermissionSerializer(
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource.replace('_FOLDER',''),
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource.replace('_FOLDER', ''),
}).list(
{'name': request.query_params.get("name"),
'permission': request.query_params.getlist("permission[]")
}))

@extend_schema(
methods=['PUT'],
description=_('Edit user authorization status of resource'),
summary=_('Edit user authorization status of resource'),
operation_id=_('Edit user authorization status of resource'), # type: ignore
description=_('Edit user group authorization status of resource'),
summary=_('Edit user group authorization status of resource'),
operation_id=_('Edit user group authorization status of resource'), # type: ignore
parameters=ResourceUserPermissionEditAPI.get_parameters(),
request=ResourceUserPermissionEditAPI.get_request(),
responses=ResourceUserPermissionEditAPI.get_response(),
tags=[_('Resources authorization')] # type: ignore
)
@log(menu='System', operate='Edit user authorization status of resource',
@log(menu='System', operate='Edit user group authorization status of resource',
get_operation_object=lambda r, k: get_user_operation_object(k.get('user_id'))
)
@has_permissions(
Expand All @@ -156,26 +154,27 @@ def get(self, request: Request, workspace_id: str, target: str, resource: str):
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}"),
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}"),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER','')),
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER', '')),
operate=Operate.SELF,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}")],
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}")],
CompareConstants.AND),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def put(self, request: Request, workspace_id: str, target: str, resource: str):
return result.success(ResourceUserGroupPermissionSerializer(
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource.replace('_FOLDER',''), })
data={'workspace_id': workspace_id, "target": target,
'auth_target_type': resource.replace('_FOLDER', ''), })
.edit(instance=request.data, current_user_id=request.user.id))

class Page(APIView):
authentication_classes = [TokenAuth]

@extend_schema(
methods=['GET'],
description=_('Get user authorization status of resource by page'),
summary=_('Get user authorization status of resource by page'),
operation_id=_('Get user authorization status of resource by page'), # type: ignore
description=_('Get user group authorization status of resource by page'),
summary=_('Get user group authorization status of resource by page'),
operation_id=_('Get user group authorization status of resource by page'), # type: ignore
parameters=ResourceUserPermissionPageAPI.get_parameters(),
responses=ResourceUserPermissionPageAPI.get_response(),
tags=[_('Resources authorization')] # type: ignore
Expand All @@ -184,19 +183,20 @@ class Page(APIView):
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}:ROLE/WORKSPACE_MANAGE"),
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}"),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER','')),
operate=Operate.SELF,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER','')}/{kwargs.get('target')}")],
lambda r, kwargs: Permission(group=Group(kwargs.get('resource')),
operate=Operate.AUTH,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}"),
ViewPermission([RoleConstants.USER.get_workspace_role()],
[lambda r, kwargs: Permission(group=Group(kwargs.get('resource').replace('_FOLDER', '')),
operate=Operate.SELF,
resource_path=f"/WORKSPACE/{kwargs.get('workspace_id')}/{kwargs.get('resource').replace('_FOLDER', '')}/{kwargs.get('target')}")],
CompareConstants.AND),
RoleConstants.WORKSPACE_MANAGE.get_workspace_role())
def get(self, request: Request, workspace_id: str, target: str, resource: str, current_page: int,
page_size: int):
return result.success(ResourceUserGroupPermissionSerializer(
data={'workspace_id': workspace_id, "target": target, 'auth_target_type': resource.replace('_FOLDER',''), }
data={'workspace_id': workspace_id, "target": target,
'auth_target_type': resource.replace('_FOLDER', ''), }
).page({'name': request.query_params.get("name"),
'permission': request.query_params.getlist("permission[]")}, current_page, page_size,
))
Loading