From 340d39d7f7ab2405b65e5bbf632fc4632d4b7e4a Mon Sep 17 00:00:00 2001 From: "Jiangjie.Bai" Date: Thu, 3 Nov 2022 16:41:51 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E7=BB=99=E7=94=A8=E6=88=B7=E6=89=80=E6=9C=89=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E7=9A=84API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/perms/api/user_permission/__init__.py | 1 + apps/perms/api/user_permission/accounts.py | 24 ++++++++++++++++++++++ apps/perms/urls/asset_permission.py | 7 +++++-- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 apps/perms/api/user_permission/accounts.py diff --git a/apps/perms/api/user_permission/__init__.py b/apps/perms/api/user_permission/__init__.py index 47f3e84a3..b0db20ee0 100644 --- a/apps/perms/api/user_permission/__init__.py +++ b/apps/perms/api/user_permission/__init__.py @@ -4,3 +4,4 @@ from .common import * from .nodes import * from .assets import * from .nodes_with_assets import * +from .accounts import * diff --git a/apps/perms/api/user_permission/accounts.py b/apps/perms/api/user_permission/accounts.py new file mode 100644 index 000000000..d504ac8f9 --- /dev/null +++ b/apps/perms/api/user_permission/accounts.py @@ -0,0 +1,24 @@ +from rest_framework import generics +from assets.serializers import AccountSerializer +from perms.utils.account import PermAccountUtil +from .mixin import RoleAdminMixin, RoleUserMixin + + +__all__ = ['UserAllGrantedAccountsApi', 'MyAllGrantedAccountsApi'] + + +class UserAllGrantedAccountsApi(RoleAdminMixin, generics.ListAPIView): + """ 授权给用户的所有账号列表 """ + serializer_class = AccountSerializer + filterset_fields = ("name", "username", "privileged", "version") + search_fields = filterset_fields + + def get_queryset(self): + util = PermAccountUtil() + accounts = util.get_perm_accounts_for_user(self.user) + return accounts + + +class MyAllGrantedAccountsApi(RoleUserMixin, UserAllGrantedAccountsApi): + """ 授权给我的所有账号列表 """ + pass diff --git a/apps/perms/urls/asset_permission.py b/apps/perms/urls/asset_permission.py index 095a67dba..99605372d 100644 --- a/apps/perms/urls/asset_permission.py +++ b/apps/perms/urls/asset_permission.py @@ -58,9 +58,12 @@ user_permission_urlpatterns = [ # 收藏的资产 path('/nodes/favorite/assets/', api.UserFavoriteGrantedAssetsApi.as_view(), name='user-ungrouped-assets'), path('nodes/favorite/assets/', api.MyFavoriteGrantedAssetsApi.as_view(), name='my-ungrouped-assets'), - # v3 中上面的 API 基本不用动 - # 获取所有和资产-用户关联的账号列表 + # 获取授权给用户的所有账号 + path('/accounts/', api.UserAllGrantedAccountsApi.as_view(), name='user-accounts'), + path('accounts/', api.MyAllGrantedAccountsApi.as_view(), name='my-accounts'), + + # 获取授权给用户某个资产的所有账号 path('/assets//accounts/', api.UserGrantedAssetAccountsApi.as_view(), name='user-asset-accounts'), path('assets//accounts/', api.MyGrantedAssetAccountsApi.as_view(), name='my-asset-accounts'), # 用户登录资产的特殊账号, @INPUT, @USER 等