From c79479d80bb14a2db56a9a7125af45c0ae1892c3 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Sun, 27 Apr 2025 18:27:35 +0800 Subject: [PATCH] feat: User profile returns permission role information (#3005) --- apps/common/constants/permission_constants.py | 6 +++--- apps/users/serializers/user.py | 16 +++++++++------- apps/users/views/user.py | 6 +++--- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/apps/common/constants/permission_constants.py b/apps/common/constants/permission_constants.py index 60a29ff90..8251ac39d 100644 --- a/apps/common/constants/permission_constants.py +++ b/apps/common/constants/permission_constants.py @@ -293,10 +293,10 @@ class Auth: current_role_list: List[Role], permission_list: List[PermissionConstants | Permission], **keywords): - # 当前工作空间的所有权限+非工作空间权限 + # 权限列表 self.permission_list = permission_list - # 当前工作空间角色列表 - self.current_role_list = current_role_list + # 角色列表 + self.role_list = current_role_list self.keywords = keywords diff --git a/apps/users/serializers/user.py b/apps/users/serializers/user.py index b39d50755..c3ab94f9c 100644 --- a/apps/users/serializers/user.py +++ b/apps/users/serializers/user.py @@ -13,7 +13,7 @@ from django.db.models import QuerySet, Q from rest_framework import serializers import uuid_utils.compat as uuid from common.constants.exception_code_constants import ExceptionCodeConstants -from common.constants.permission_constants import RoleConstants +from common.constants.permission_constants import RoleConstants, Auth from common.utils.common import valid_license, password_encrypt from users.models import User from django.utils.translation import gettext_lazy as _ @@ -39,18 +39,20 @@ class CreateUserSerializer(serializers.Serializer): class UserProfileSerializer(serializers.Serializer): @staticmethod - def profile(user: User): + def profile(user: User, auth: Auth): """ - 获取用户详情 - :param user: 用户对象 - :return: + 获取用户详情 + @param user: 用户对象 + @param auth: 认证对象 + @return: """ + return {'id': user.id, 'username': user.username, 'nick_name': user.nick_name, 'email': user.email, - 'role': user.role, - 'permissions': [str(p) for p in []], + 'role': auth.role_list, + 'permissions': auth.permission_list, 'is_edit_password': user.password == 'd880e722c47a34d8e9fce789fc62389d' if user.role == 'ADMIN' else False, 'language': user.language} diff --git a/apps/users/views/user.py b/apps/users/views/user.py index f67675ab7..502ee3784 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -28,7 +28,7 @@ class UserProfileView(APIView): tags=[_("User management")], responses=UserProfileAPI.get_response()) def get(self, request: Request): - return result.success(UserProfileSerializer().profile(request.user)) + return result.success(UserProfileSerializer().profile(request.user, request.auth)) class TestPermissionsUserView(APIView): @@ -41,7 +41,7 @@ class TestPermissionsUserView(APIView): responses=UserProfileAPI.get_response()) @has_permissions(PermissionConstants.USER_EDIT) def get(self, request: Request): - return result.success(UserProfileSerializer().profile(request.user)) + return result.success(UserProfileSerializer().profile(request.user, request.auth)) class TestWorkspacePermissionUserView(APIView): @@ -55,7 +55,7 @@ class TestWorkspacePermissionUserView(APIView): parameters=TestWorkspacePermissionUserApi.get_parameters()) @has_permissions(PermissionConstants.USER_EDIT.get_workspace_permission()) def get(self, request: Request, workspace_id): - return result.success(UserProfileSerializer().profile(request.user)) + return result.success(UserProfileSerializer().profile(request.user, request.auth)) class UserManage(APIView):