diff --git a/apps/system_manage/serializers/user_group_resource_permission.py b/apps/system_manage/serializers/user_group_resource_permission.py index 3e427f354b9..2ce7c6f4e8e 100644 --- a/apps/system_manage/serializers/user_group_resource_permission.py +++ b/apps/system_manage/serializers/user_group_resource_permission.py @@ -29,7 +29,7 @@ from models_provider.models import Model from system_manage.models import WorkspaceUserGroupResourcePermission from tools.models import Tool -from users.models.user_group import SystemUserGroupRelation +from users.models.user_group import SystemUserGroup, SystemUserGroupRelation class PermissionSerializer(serializers.Serializer): @@ -170,8 +170,6 @@ def list(self, instance, user, with_valid=True): if with_valid: self.is_valid(raise_exception=True) UserResourcePermissionUserListRequest(data=instance).is_valid(raise_exception=True) - workspace_id = self.data.get("workspace_id") - user_group_id = self.data.get("user_group_id") # 用户权限列表 user_resource_permission_list = native_search( self.get_queryset(instance), @@ -188,8 +186,6 @@ def page(self, instance, current_page: int, page_size: int, user, with_valid=Tru if with_valid: self.is_valid(raise_exception=True) UserResourcePermissionUserListRequest(data=instance).is_valid(raise_exception=True) - workspace_id = self.data.get("workspace_id") - user_group_id = self.data.get("user_group_id") # 用户组对应的资源权限分页列表 user_resource_permission_page_list = native_page_search( current_page, @@ -308,18 +304,22 @@ def get_queryset(self, instance): "name": models.CharField(), "permission": models.CharField(), "u.id": models.UUIDField(), + "u.workspace_id": models.CharField(), } ) ) name = instance.get("name") permission = instance.get("permission") + workspace_id = self.data.get("workspace_id") query_p_list = [None if p == "NOT_AUTH" else p for p in permission] workspace_user_group_resource_permission_query_set = QuerySet(WorkspaceUserGroupResourcePermission).filter( - workspace_id=self.data.get("workspace_id"), + workspace_id=workspace_id, auth_target_type=self.data.get("auth_target_type"), target=self.data.get("target"), ) + if workspace_id: + user_query_set = user_query_set.filter(**{"u.workspace_id": workspace_id}) if name: user_query_set = user_query_set.filter(name__contains=name) if permission: @@ -413,6 +413,13 @@ def edit(self, instance, with_valid=True, current_user_id=None): users_permission = instance user_group_ids = [item["user_group_id"] for item in users_permission] + valid_user_group_ids = set( + QuerySet(SystemUserGroup) + .filter(workspace_id=workspace_id, id__in=user_group_ids) + .values_list("id", flat=True) + ) + if len(valid_user_group_ids) != len(set(user_group_ids)): + raise AppApiException(500, _("User group does not exist")) include_children = users_permission[0].get("include_children") folder_ids = users_permission[0].get("folder_ids") # 删除已存在的对应的用户在该资源下的权限 diff --git a/apps/system_manage/views/user_group_resource_permission.py b/apps/system_manage/views/user_group_resource_permission.py index d0c699a73c1..58d88509626 100644 --- a/apps/system_manage/views/user_group_resource_permission.py +++ b/apps/system_manage/views/user_group_resource_permission.py @@ -173,7 +173,7 @@ class WorkspaceResourceUserGroupPermissionView(APIView): ) def get(self, request: Request, workspace_id: str, target: str, resource: str): return result.success( - UserGroupResourcePermissionSerializer( + ResourceUserGroupPermissionSerializer( data={ "workspace_id": workspace_id, "target": target,