瀏覽代碼

HUE-8530 [organization] Add org filtering to get user API

Romain 5 年之前
父節點
當前提交
8a43497226
共有 2 個文件被更改,包括 8 次插入3 次删除
  1. 3 3
      apps/useradmin/src/useradmin/api.py
  2. 5 0
      apps/useradmin/src/useradmin/models2.py

+ 3 - 3
apps/useradmin/src/useradmin/api.py

@@ -21,7 +21,7 @@ from desktop.decorators import check_superuser_permission
 from desktop.lib.django_util import JsonResponse
 from desktop.lib.i18n import smart_unicode
 
-from useradmin.models import User, Group
+from useradmin.models import User, Group, orm_user_lookup
 
 
 LOG = logging.getLogger(__name__)
@@ -64,7 +64,7 @@ def get_users(request):
     users = users.filter(is_active=True)
 
   if username:
-    users = users.filter(username=username)
+    users = users.filter({orm_user_lookup(): username})
 
   if groups:
     group_ids = []
@@ -77,7 +77,7 @@ def get_users(request):
         LOG.exception("Failed to filter by group, group with name %s not found." % groupname)
     users = users.filter(groups__in=group_ids)
 
-  users = users.order_by('username')
+  users = users.order_by(orm_user_lookup())
 
   for user in users:
     user = {

+ 5 - 0
apps/useradmin/src/useradmin/models2.py

@@ -126,6 +126,11 @@ class UserManager(BaseUserManager):
     if kwargs.get('username'):
       kwargs['email'] = kwargs.pop('username')
 
+    if request and hasattr(request, 'user') and type(request.user._wrapped) is not object:  # Avoid infinite recursion
+      queryset = queryset.filter(
+        organization=request.user.organization
+      )
+
     return super(UserManager, self).get(*args, **kwargs)
 
   def order_by(self, *args, **kwargs):