diff --git a/apps/common/auth/constants/permission_constants.py b/apps/common/auth/constants/permission_constants.py index cb30da125b6..e9a38ea47fb 100644 --- a/apps/common/auth/constants/permission_constants.py +++ b/apps/common/auth/constants/permission_constants.py @@ -75,7 +75,7 @@ class PermissionConstants(Enum): HOMEPAGE_READ = ( Permission(group=Group.HOMEPAGE, sub_group=Group.HOMEPAGE, operate=Operate.READ, bit_index=0), PermissionMeta( - role_list=[RoleConstants.USER], + role_list=[RoleConstants.WORKSPACE_MANAGE, RoleConstants.USER], category=Category.WORKSPACE, scope=[PermissionScopeConstants.WORKSPACE], ), @@ -84,7 +84,7 @@ class PermissionConstants(Enum): HOMEPAGE_EXPORT = ( Permission(group=Group.HOMEPAGE, sub_group=Group.HOMEPAGE, operate=Operate.EXPORT, bit_index=1), PermissionMeta( - role_list=[RoleConstants.USER], + role_list=[RoleConstants.WORKSPACE_MANAGE, RoleConstants.USER], category=Category.WORKSPACE, scope=[PermissionScopeConstants.WORKSPACE], ), diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index 40954d3cee8..bcccfe2089f 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -700,10 +700,11 @@ def get_user_list(self, user_id, workspace_id, nick_name): return list(users) - def get_user_members(self, workspace_id): + def get_user_members(self, workspace_id, nick_name=None): """ 获取工作空间成员列表 :param workspace_id: 工作空间ID + :param nick_name: 昵称模糊查询 :return: 成员列表 """ role_model = DatabaseModelManage.get_model("role_model") @@ -713,6 +714,8 @@ def get_user_members(self, workspace_id): user_role_relations = user_role_relation_model.objects.filter( workspace_id=workspace_id, role__type="USER" ).select_related("role", "user") + if nick_name: + user_role_relations = user_role_relations.filter(user__nick_name__contains=nick_name) user_dict = {} for relation in user_role_relations: user_id = relation.user.id @@ -726,9 +729,11 @@ def get_user_members(self, workspace_id): user_dict[user_id]["roles"].append(relation.role.role_name) # 将字典值转换为列表形式 - return list(user_dict.values()) + return list(user_dict.values())[:200] user_list = User.objects.exclude(role=RoleConstants.ADMIN.name) - return [{"id": user.id, "nick_name": user.nick_name, "roles": [RoleConstants.USER.name]} for user in user_list] + if nick_name: + user_list = user_list.filter(nick_name__contains=nick_name) + return [{"id": user.id, "nick_name": user.nick_name, "roles": [RoleConstants.USER.name]} for user in user_list[:200]] class BatchDelete(serializers.Serializer): ids = serializers.ListField(required=True, label=_("User IDs")) diff --git a/apps/users/views/user.py b/apps/users/views/user.py index bbe971f2c03..b75c7dc0ea5 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -214,7 +214,8 @@ class WorkspaceUserMemberView(APIView): RoleConstants.EXTENDS_USER, ) def get(self, request: Request, workspace_id): - return result.success(UserManageSerializer().get_user_members(workspace_id)) + nick_name = request.query_params.get("nick_name", None) + return result.success(UserManageSerializer().get_user_members(workspace_id, nick_name)) class UserManage(APIView): diff --git a/ui/src/views/system/identity/roles/components/RolePermissionConfiguration.vue b/ui/src/views/system/identity/roles/components/RolePermissionConfiguration.vue index 315a0fdaa06..112e080da09 100644 --- a/ui/src/views/system/identity/roles/components/RolePermissionConfiguration.vue +++ b/ui/src/views/system/identity/roles/components/RolePermissionConfiguration.vue @@ -1,7 +1,7 @@