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 等