perf: user profile api

This commit is contained in:
ibuler 2025-04-18 14:10:09 +08:00 committed by 老广
parent 533dbf316c
commit bcb112d5c6
5 changed files with 39 additions and 30 deletions

View File

@ -1,9 +1,9 @@
from rest_framework.response import Response
from rest_framework.decorators import action
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from rest_framework.decorators import action
from rest_framework.response import Response
from common.tree import TreeNodeSerializer
from common.api import JMSModelViewSet from common.api import JMSModelViewSet
from common.tree import TreeNodeSerializer
from ..models import Permission, Role from ..models import Permission, Role
from ..serializers import PermissionSerializer from ..serializers import PermissionSerializer

View File

@ -1,10 +1,9 @@
from django.contrib.auth.models import ContentType from django.contrib.auth.models import ContentType
from django.utils.translation import gettext_lazy as _
from rest_framework import serializers from rest_framework import serializers
from ..models import Permission from ..models import Permission
__all__ = ['PermissionSerializer', 'UserPermsSerializer'] __all__ = ['PermissionSerializer']
class PermissionContentTypeSerializer(serializers.ModelSerializer): class PermissionContentTypeSerializer(serializers.ModelSerializer):
@ -19,13 +18,3 @@ class PermissionSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Permission model = Permission
fields = ['id', 'name', 'content_type', 'codename'] fields = ['id', 'name', 'content_type', 'codename']
class UserPermsSerializer(serializers.Serializer):
perms = serializers.ListField(label=_('Perms'), read_only=True)
def create(self, validated_data):
pass
def update(self, instance, validated_data):
pass

View File

@ -17,7 +17,8 @@ from ..models import User
__all__ = [ __all__ = [
'UserResetPasswordApi', 'UserResetPKApi', 'UserResetPasswordApi', 'UserResetPKApi',
'UserProfileApi', 'UserPasswordApi' 'UserProfileApi', 'UserPasswordApi',
'UserPermissionsApi'
] ]
@ -77,3 +78,11 @@ class UserPasswordApi(generics.RetrieveUpdateAPIView):
resp = super().update(request, *args, **kwargs) resp = super().update(request, *args, **kwargs)
ResetPasswordSuccessMsg(self.request.user, request).publish_async() ResetPasswordSuccessMsg(self.request.user, request).publish_async()
return resp return resp
class UserPermissionsApi(generics.RetrieveAPIView):
permission_classes = (IsAuthenticated,)
serializer_class = serializers.UserPermsSerializer
def get_object(self):
return self.request.user

View File

@ -8,14 +8,6 @@ from .user import UserSerializer
from ..models import User, MFAMixin from ..models import User, MFAMixin
class UserOrgSerializer(serializers.Serializer):
id = serializers.CharField()
name = serializers.CharField()
is_default = serializers.BooleanField(read_only=True)
is_root = serializers.BooleanField(read_only=True)
is_system = serializers.BooleanField(read_only=True)
class UserUpdatePasswordSerializer(serializers.ModelSerializer): class UserUpdatePasswordSerializer(serializers.ModelSerializer):
old_password = EncryptedField(required=True, max_length=128) old_password = EncryptedField(required=True, max_length=128)
new_password = EncryptedField(required=True, max_length=128) new_password = EncryptedField(required=True, max_length=128)
@ -71,16 +63,11 @@ class UserProfileSerializer(UserSerializer):
mfa_level = LabeledChoiceField(choices=MFAMixin.MFA_LEVEL_CHOICES, label=_("MFA"), required=False) mfa_level = LabeledChoiceField(choices=MFAMixin.MFA_LEVEL_CHOICES, label=_("MFA"), required=False)
guide_url = serializers.SerializerMethodField() guide_url = serializers.SerializerMethodField()
receive_backends = serializers.ListField(child=serializers.CharField(), read_only=True) receive_backends = serializers.ListField(child=serializers.CharField(), read_only=True)
console_orgs = UserOrgSerializer(many=True, read_only=True)
audit_orgs = UserOrgSerializer(many=True, read_only=True)
workbench_orgs = UserOrgSerializer(many=True, read_only=True)
perms = serializers.ListField(label=_("Perms"), read_only=True)
class Meta(UserSerializer.Meta): class Meta(UserSerializer.Meta):
read_only_fields = [ read_only_fields = [
'date_joined', 'last_login', 'created_by', 'source', 'date_joined', 'last_login', 'created_by', 'source',
'console_orgs', 'audit_orgs', 'workbench_orgs', 'receive_backends',
'receive_backends', 'perms',
] ]
fields_mini = [ fields_mini = [
'id', 'name', 'username', 'email', 'id', 'name', 'username', 'email',
@ -184,3 +171,26 @@ class ResetOTPSerializer(serializers.Serializer):
def update(self, instance, validated_data): def update(self, instance, validated_data):
pass pass
class UserOrgSerializer(serializers.Serializer):
id = serializers.CharField()
name = serializers.CharField()
is_default = serializers.BooleanField(read_only=True)
is_root = serializers.BooleanField(read_only=True)
is_system = serializers.BooleanField(read_only=True)
class UserPermsSerializer(serializers.Serializer):
id = serializers.CharField(label=_("User ID"), read_only=True)
username = serializers.CharField(label=_("Username"), read_only=True)
console_orgs = UserOrgSerializer(many=True, read_only=True)
audit_orgs = UserOrgSerializer(many=True, read_only=True)
workbench_orgs = UserOrgSerializer(many=True, read_only=True)
perms = serializers.ListField(label=_("Perms"), read_only=True)
def create(self, validated_data):
pass
def update(self, instance, validated_data):
pass

View File

@ -22,6 +22,7 @@ urlpatterns = [
path('profile/', api.UserProfileApi.as_view(), name='user-profile'), path('profile/', api.UserProfileApi.as_view(), name='user-profile'),
path('profile/password/', api.UserPasswordApi.as_view(), name='user-password'), path('profile/password/', api.UserPasswordApi.as_view(), name='user-password'),
path('profile/mfa/reset/', api.UserResetMFAApi.as_view(), name='my-mfa-reset'), path('profile/mfa/reset/', api.UserResetMFAApi.as_view(), name='my-mfa-reset'),
path('profile/permissions/', api.UserPermissionsApi.as_view(), name='user-permissions'),
path('preference/', api.PreferenceApi.as_view(), name='preference'), path('preference/', api.PreferenceApi.as_view(), name='preference'),
path('users/<uuid:pk>/mfa/reset/', api.UserResetMFAApi.as_view(), name='user-reset-mfa'), path('users/<uuid:pk>/mfa/reset/', api.UserResetMFAApi.as_view(), name='user-reset-mfa'),
path('users/<uuid:pk>/password/', api.UserChangePasswordApi.as_view(), name='change-user-password'), path('users/<uuid:pk>/password/', api.UserChangePasswordApi.as_view(), name='change-user-password'),