feat: User profile returns permission role information (#3005)

This commit is contained in:
shaohuzhang1 2025-04-27 18:27:35 +08:00 committed by GitHub
parent 7bda26d92a
commit c79479d80b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 13 deletions

View File

@ -293,10 +293,10 @@ class Auth:
current_role_list: List[Role], current_role_list: List[Role],
permission_list: List[PermissionConstants | Permission], permission_list: List[PermissionConstants | Permission],
**keywords): **keywords):
# 当前工作空间的所有权限+非工作空间权限 # 权限列表
self.permission_list = permission_list self.permission_list = permission_list
# 当前工作空间角色列表 # 角色列表
self.current_role_list = current_role_list self.role_list = current_role_list
self.keywords = keywords self.keywords = keywords

View File

@ -13,7 +13,7 @@ from django.db.models import QuerySet, Q
from rest_framework import serializers from rest_framework import serializers
import uuid_utils.compat as uuid import uuid_utils.compat as uuid
from common.constants.exception_code_constants import ExceptionCodeConstants 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 common.utils.common import valid_license, password_encrypt
from users.models import User from users.models import User
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@ -39,18 +39,20 @@ class CreateUserSerializer(serializers.Serializer):
class UserProfileSerializer(serializers.Serializer): class UserProfileSerializer(serializers.Serializer):
@staticmethod @staticmethod
def profile(user: User): def profile(user: User, auth: Auth):
""" """
获取用户详情 获取用户详情
:param user: 用户对象 @param user: 用户对象
:return: @param auth: 认证对象
@return:
""" """
return {'id': user.id, return {'id': user.id,
'username': user.username, 'username': user.username,
'nick_name': user.nick_name, 'nick_name': user.nick_name,
'email': user.email, 'email': user.email,
'role': user.role, 'role': auth.role_list,
'permissions': [str(p) for p in []], 'permissions': auth.permission_list,
'is_edit_password': user.password == 'd880e722c47a34d8e9fce789fc62389d' if user.role == 'ADMIN' else False, 'is_edit_password': user.password == 'd880e722c47a34d8e9fce789fc62389d' if user.role == 'ADMIN' else False,
'language': user.language} 'language': user.language}

View File

@ -28,7 +28,7 @@ class UserProfileView(APIView):
tags=[_("User management")], tags=[_("User management")],
responses=UserProfileAPI.get_response()) responses=UserProfileAPI.get_response())
def get(self, request: Request): def get(self, request: Request):
return result.success(UserProfileSerializer().profile(request.user)) return result.success(UserProfileSerializer().profile(request.user, request.auth))
class TestPermissionsUserView(APIView): class TestPermissionsUserView(APIView):
@ -41,7 +41,7 @@ class TestPermissionsUserView(APIView):
responses=UserProfileAPI.get_response()) responses=UserProfileAPI.get_response())
@has_permissions(PermissionConstants.USER_EDIT) @has_permissions(PermissionConstants.USER_EDIT)
def get(self, request: Request): def get(self, request: Request):
return result.success(UserProfileSerializer().profile(request.user)) return result.success(UserProfileSerializer().profile(request.user, request.auth))
class TestWorkspacePermissionUserView(APIView): class TestWorkspacePermissionUserView(APIView):
@ -55,7 +55,7 @@ class TestWorkspacePermissionUserView(APIView):
parameters=TestWorkspacePermissionUserApi.get_parameters()) parameters=TestWorkspacePermissionUserApi.get_parameters())
@has_permissions(PermissionConstants.USER_EDIT.get_workspace_permission()) @has_permissions(PermissionConstants.USER_EDIT.get_workspace_permission())
def get(self, request: Request, workspace_id): 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): class UserManage(APIView):