Pārlūkot izejas kodu

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

Romain 5 gadi atpakaļ
vecāks
revīzija
8a43497226

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

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

@@ -126,6 +126,11 @@ class UserManager(BaseUserManager):
     if kwargs.get('username'):
     if kwargs.get('username'):
       kwargs['email'] = kwargs.pop('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)
     return super(UserManager, self).get(*args, **kwargs)
 
 
   def order_by(self, *args, **kwargs):
   def order_by(self, *args, **kwargs):