feat: 完成用户、用户组对于授权账号的API获取

This commit is contained in:
Jiangjie.Bai
2022-09-29 16:18:12 +08:00
parent 15c8c035aa
commit 4a1aeefb82
4 changed files with 83 additions and 30 deletions

View File

@@ -20,6 +20,7 @@ __all__ = [
'UserGroupGrantedNodeAssetsApi',
'UserGroupGrantedNodeChildrenAsTreeApi',
'UserGroupGrantedAssetSystemUsersApi',
'UserGroupGrantedAssetAccountsApi',
]
@@ -203,3 +204,17 @@ class UserGroupGrantedNodeChildrenAsTreeApi(SerializeToTreeNodeMixin, ListAPIVie
class UserGroupGrantedAssetSystemUsersApi(UserGroupMixin, uapi.UserGrantedAssetSystemUsersForAdminApi):
def get_asset_system_user_ids_with_actions(self, asset):
return get_asset_system_user_ids_with_actions_by_group(self.group, asset)
class UserGroupGrantedAssetAccountsApi(uapi.UserGrantedAssetAccountsApi):
@lazyproperty
def user_group(self):
group_id = self.kwargs.get('pk')
return UserGroup.objects.get(id=group_id)
def get_queryset(self):
accounts = AssetPermission.get_perm_asset_accounts(
user_group=self.user_group, asset=self.asset
)
return accounts

View File

@@ -30,8 +30,10 @@ __all__ = [
'ValidateUserAssetPermissionApi',
'GetUserAssetPermissionActionsApi',
'MyGrantedAssetSystemUsersApi',
'UserGrantedAssetAccounts',
'MyGrantedAssetAccounts',
'UserGrantedAssetAccountsApi',
'MyGrantedAssetAccountsApi',
'UserGrantedAssetSpecialAccountsApi',
'MyGrantedAssetSpecialAccountsApi',
]
@@ -143,7 +145,7 @@ class MyGrantedAssetSystemUsersApi(UserGrantedAssetSystemUsersForAdminApi):
return self.request.user
class UserGrantedAssetAccounts(ListAPIView):
class UserGrantedAssetAccountsApi(ListAPIView):
serializer_class = serializers.AccountsGrantedSerializer
rbac_perms = {
'list': 'perms.view_userassets'
@@ -162,22 +164,40 @@ class UserGrantedAssetAccounts(ListAPIView):
return asset
def get_queryset(self):
accounts = AssetPermission.get_user_perm_asset_accounts(
self.user, self.asset, with_actions=True
)
accounts = AssetPermission.get_perm_asset_accounts(user=self.user, asset=self.asset)
return accounts
# @INPUT @USER
# inner_accounts = [
# Account.get_input_account(), Account.get_user_account(self.user.username)
# ]
# for inner_account in inner_accounts:
# inner_account.actions = Action.ALL
# accounts = accounts + inner_accounts
# 构造默认包含的账号,如: @INPUT @USER
# return accounts
class MyGrantedAssetAccounts(UserGrantedAssetAccounts):
class MyGrantedAssetAccountsApi(UserGrantedAssetAccountsApi):
permission_classes = (IsValidUser,)
@lazyproperty
def user(self):
return self.request.user
class UserGrantedAssetSpecialAccountsApi(ListAPIView):
serializer_class = serializers.AccountsGrantedSerializer
rbac_perms = {
'list': 'perms.view_userassets'
}
@lazyproperty
def user(self):
return self.request.user
def get_queryset(self):
# 构造默认包含的账号,如: @INPUT @USER
accounts = [
Account.get_input_account(),
Account.get_user_account(self.user.username)
]
for account in accounts:
account.actions = Action.ALL
return accounts
class MyGrantedAssetSpecialAccountsApi(UserGrantedAssetSpecialAccountsApi):
permission_classes = (IsValidUser,)
@lazyproperty