feat: 添加API获取授权规则授权的所有账号列表

pull/9008/head
Jiangjie.Bai 2022-11-01 19:55:49 +08:00
parent 0c15ac71f6
commit 0728868af2
4 changed files with 17 additions and 3 deletions

View File

@ -10,11 +10,13 @@ from orgs.utils import current_org
from perms import serializers
from perms import models
from perms.utils.user_permission import UserGrantedAssetsQueryUtils
from assets.serializers import AccountSerializer
__all__ = [
'AssetPermissionUserRelationViewSet', 'AssetPermissionUserGroupRelationViewSet',
'AssetPermissionAssetRelationViewSet', 'AssetPermissionNodeRelationViewSet',
'AssetPermissionAllAssetListApi', 'AssetPermissionAllUserListApi',
'AssetPermissionAccountListApi',
]
@ -111,3 +113,16 @@ class AssetPermissionNodeRelationViewSet(RelationMixin):
queryset = queryset.annotate(node_key=F('node__key'))
return queryset
class AssetPermissionAccountListApi(generics.ListAPIView):
serializer_class = AccountSerializer
filterset_fields = ("name", "username", "privileged", "version")
search_fields = filterset_fields
def get_queryset(self):
pk = self.kwargs.get("pk")
perm = get_object_or_404(models.AssetPermission, pk=pk)
accounts = perm.get_all_accounts()
return accounts

View File

@ -136,7 +136,7 @@ class AssetPermission(OrgModelMixin):
q = Q(asset_id__in=asset_ids)
if not self.is_perm_all_accounts:
q &= Q(username__in=self.accounts)
accounts = Account.objects.filter(q)
accounts = Account.objects.filter(q).order_by('asset__name', 'name', 'username')
if not flat:
return accounts
return accounts.values_list('id', flat=True)

View File

@ -3,9 +3,7 @@
from rest_framework import serializers
from common.drf.serializers import BulkSerializerMixin
from assets.models import Asset, Node
from perms.models import AssetPermission
from users.models import User
__all__ = [
'AssetPermissionUserRelationSerializer',

View File

@ -84,6 +84,7 @@ permission_urlpatterns = [
# 授权规则中授权的资产
path('<uuid:pk>/assets/all/', api.AssetPermissionAllAssetListApi.as_view(), name='asset-permission-all-assets'),
path('<uuid:pk>/users/all/', api.AssetPermissionAllUserListApi.as_view(), name='asset-permission-all-users'),
path('<uuid:pk>/accounts/', api.AssetPermissionAccountListApi.as_view(), name='asset-permission-accounts'),
]
asset_permission_urlpatterns = [