diff --git a/apps/rbac/api/role.py b/apps/rbac/api/role.py index 022a2ac05..2b61b59ec 100644 --- a/apps/rbac/api/role.py +++ b/apps/rbac/api/role.py @@ -79,8 +79,11 @@ class RoleViewSet(JMSModelViewSet): ids = [role.id for role in queryset] queryset = Role.objects.filter(id__in=ids).order_by(*self.ordering) org_id = current_org.id - q = Q(role__scope=Role.Scope.system) | Q(role__scope=Role.Scope.org, org_id=org_id) - role_bindings = RoleBinding.objects.filter(q).values_list('role_id').annotate( + if current_org.is_root(): + q = Q(role__scope=Role.Scope.system) | Q(role__scope=Role.Scope.org) + else: + q = Q(role__scope=Role.Scope.system) | Q(role__scope=Role.Scope.org, org_id=org_id) + role_bindings = RoleBinding.objects_raw.filter(q).values_list('role_id').annotate( user_count=Count('user_id', distinct=True) ) role_user_amount_mapper = {role_id: user_count for role_id, user_count in role_bindings}