Skip to content

Commit 7482d07

Browse files
committed
fix: update get_user_list method to include user_id for workspace validation
1 parent 955e5a4 commit 7482d07

2 files changed

Lines changed: 40 additions & 28 deletions

File tree

‎apps/users/serializers/user.py‎

Lines changed: 39 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,32 +13,36 @@
1313
import re
1414
from collections import defaultdict
1515

16-
from django.core.cache import cache
17-
from django.core.mail.backends.smtp import EmailBackend
18-
from django.db import transaction
19-
from django.db.models import Q, QuerySet
20-
from django.utils import translation
21-
from rest_framework import serializers
2216
import uuid_utils.compat as uuid
23-
2417
from common.constants.cache_version import Cache_Version
2518
from common.constants.exception_code_constants import ExceptionCodeConstants
26-
from common.constants.permission_constants import RoleConstants, Auth, ResourceAuthType, ResourcePermissionRole, \
27-
ResourcePermission
19+
from common.constants.permission_constants import (
20+
Auth,
21+
ResourceAuthType,
22+
ResourcePermission,
23+
ResourcePermissionRole,
24+
RoleConstants,
25+
)
2826
from common.database_model_manage.database_model_manage import DatabaseModelManage
2927
from common.db.search import page_search
3028
from common.exception.app_exception import AppApiException
31-
from common.utils.common import valid_license, password_encrypt, password_verify, get_random_chars
29+
from common.utils.common import get_random_chars, password_encrypt, password_verify, valid_license
3230
from common.utils.rsa_util import decrypt
31+
from django.core import validators
32+
from django.core.cache import cache
33+
from django.core.mail import send_mail
34+
from django.core.mail.backends.smtp import EmailBackend
35+
from django.db import transaction
36+
from django.db.models import Q, QuerySet
37+
from django.utils import translation
38+
from django.utils.translation import get_language, to_locale
39+
from django.utils.translation import gettext_lazy as _
3340
from maxkb import settings
3441
from maxkb.conf import PROJECT_DIR
3542
from maxkb.const import CONFIG
36-
from system_manage.models import SystemSetting, SettingType, AuthTargetType, WorkspaceUserResourcePermission
43+
from rest_framework import serializers
44+
from system_manage.models import AuthTargetType, SettingType, SystemSetting, WorkspaceUserResourcePermission
3745
from users.models import User
38-
from django.utils.translation import gettext_lazy as _, to_locale
39-
from django.core import validators
40-
from django.core.mail import send_mail
41-
from django.utils.translation import get_language
4246

4347
PASSWORD_REGEX = re.compile(
4448
r"^" # 开始
@@ -555,28 +559,35 @@ def re_password(self, instance, with_valid=True):
555559
user.save()
556560
return True
557561

558-
def get_user_list(self, workspace_id, nick_name):
562+
def get_user_list(self, user_id,workspace_id, nick_name):
559563
"""
560564
获取用户列表
561565
:param workspace_id: 工作空间ID
562566
:return: 用户列表
563567
"""
564568
workspace_user_role_mapping_model = DatabaseModelManage.get_model("workspace_user_role_mapping")
565569
if workspace_user_role_mapping_model:
566-
user_ids = (
567-
workspace_user_role_mapping_model.objects
568-
.filter(workspace_id=workspace_id)
569-
.values_list('user_id', flat=True)
570-
.distinct()
571-
)
570+
# 判断当前用户是否属于该空间,不属于直接返回空
571+
if not workspace_user_role_mapping_model.objects.filter(
572+
workspace_id=workspace_id, user_id=user_id
573+
).exists():
574+
query_set = User.objects.none()
575+
else:
576+
query_set = User.objects.filter(
577+
id__in=workspace_user_role_mapping_model.objects.filter(workspace_id=workspace_id).values("user_id")
578+
)
579+
572580
else:
573-
user_ids = User.objects.filter(role__in=RoleConstants.USER.name).values_list('id', flat=True)
581+
if user_id == "f0dd8f71-e4ee-11ee-8c84-a8a1595801ab":
582+
query_set = User.objects.all()
583+
else:
584+
query_set = User.objects.filter(role=RoleConstants.USER.name)
574585

575-
query_set = User.objects.filter(id__in=user_ids)
576586
if nick_name:
577587
query_set = query_set.filter(nick_name__contains=nick_name)
578588

579-
users = query_set.values('id', 'nick_name')[:200]
589+
users = query_set.values("id", "nick_name")[:200]
590+
580591
return list(users)
581592

582593
def get_user_members(self, workspace_id):
@@ -813,11 +824,12 @@ def _get_resource_maps(workspace_ids):
813824
"""
814825
获取各类型资源按工作空间的映射
815826
"""
827+
from collections import defaultdict
828+
816829
from application.models import Application, ApplicationFolder
817830
from knowledge.models import Knowledge, KnowledgeFolder
818-
from tools.models import Tool, ToolFolder
819831
from models_provider.models import Model
820-
from collections import defaultdict
832+
from tools.models import Tool, ToolFolder
821833

822834
resource_maps = {
823835
'apps': defaultdict(list),

‎apps/users/views/user.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ class WorkspaceUserListView(APIView):
153153
RoleConstants.EXTENDS_WORKSPACE_MANAGE, RoleConstants.USER, RoleConstants.EXTENDS_USER)
154154
def get(self, request: Request, workspace_id):
155155
nick_name = request.query_params.get('nick_name', None)
156-
return result.success(UserManageSerializer().get_user_list(workspace_id, nick_name))
156+
return result.success(UserManageSerializer().get_user_list(str(request.user.id),workspace_id, nick_name))
157157

158158

159159
class WorkspaceUserMemberView(APIView):

0 commit comments

Comments
 (0)