feat: 调整permission以支持后端路由
This commit is contained in:
parent
a2f676e58c
commit
da54222e20
|
@ -0,0 +1,43 @@
|
|||
# Generated by Django 3.2.12 on 2024-12-13 04:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('system', '0005_alter_permission_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='component',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='组件'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='icon',
|
||||
field=models.CharField(blank=True, max_length=30, null=True, verbose_name='图标'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='is_fullpage',
|
||||
field=models.BooleanField(default=False, verbose_name='是否全屏'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='is_hidden',
|
||||
field=models.BooleanField(default=False, verbose_name='是否隐藏'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='path',
|
||||
field=models.CharField(blank=True, max_length=100, null=True, verbose_name='路由'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='permission',
|
||||
name='route_name',
|
||||
field=models.CharField(blank=True, max_length=30, null=True, verbose_name='路由名称'),
|
||||
),
|
||||
]
|
|
@ -30,6 +30,13 @@ class Permission(ParentModel, BaseModel):
|
|||
'类型', choices=menu_type_choices, default=30)
|
||||
sort = models.PositiveSmallIntegerField('排序标记', default=1)
|
||||
codes = models.JSONField('权限标识', default=list, null=True, blank=True)
|
||||
|
||||
route_name = models.CharField('路由名称', max_length=30, null=True, blank=True)
|
||||
icon = models.CharField('图标', max_length=30, null=True, blank=True)
|
||||
path = models.CharField('路由', max_length=100, null=True, blank=True)
|
||||
component = models.CharField('组件', max_length=100, null=True, blank=True)
|
||||
is_hidden = models.BooleanField('是否隐藏', default=False)
|
||||
is_fullpage = models.BooleanField('是否全屏', default=False)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
|
@ -22,7 +22,7 @@ from apps.system.filters import DeptFilterSet, UserFilterSet
|
|||
# from django_q.models import Task as QTask, Schedule as QSchedule
|
||||
from apps.utils.mixins import (CustomCreateModelMixin, MyLoggingMixin)
|
||||
from django.conf import settings
|
||||
from apps.utils.permission import ALL_PERMS, get_user_perms_map
|
||||
from apps.utils.permission import ALL_PERMS
|
||||
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
|
||||
from server.celery import app as celery_app
|
||||
from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User,
|
||||
|
@ -35,7 +35,8 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali
|
|||
PTaskSerializer, PTaskCreateUpdateSerializer, PTaskResultSerializer,
|
||||
RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer,
|
||||
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
|
||||
UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer)
|
||||
UserPostSerializer, UserUpdateSerializer, UserFullInfoSerializer,
|
||||
MyScheduleCreateSerializer, MyScheduleSerializer)
|
||||
from rest_framework.viewsets import GenericViewSet
|
||||
from cron_descriptor import get_description
|
||||
import locale
|
||||
|
@ -541,24 +542,7 @@ class UserViewSet(CustomModelViewSet):
|
|||
获取登录用户信息
|
||||
"""
|
||||
user = request.user
|
||||
perms = get_user_perms_map(user, update_cache=True)
|
||||
data = {
|
||||
'id': user.id,
|
||||
'username': user.username,
|
||||
'type': user.type,
|
||||
'name': user.name,
|
||||
'roles': user.roles.values_list('name', flat=True),
|
||||
'avatar': user.avatar,
|
||||
'perms': perms,
|
||||
'belong_dept': user.belong_dept.id if user.belong_dept else None,
|
||||
'post': user.post.id if user.post else None,
|
||||
'belong_dept_name': user.belong_dept.name if user.belong_dept else '',
|
||||
'post_name': user.post.name if user.post else '',
|
||||
'is_superuser': user.is_superuser,
|
||||
'wxmp_openid': user.wxmp_openid,
|
||||
'wx_openid': user.wx_openid
|
||||
}
|
||||
return Response(data)
|
||||
return Response(UserFullInfoSerializer(user).data)
|
||||
|
||||
@action(methods=['post'], detail=False, permission_classes=[IsAuthenticated])
|
||||
def bind_wxmp(self, request, pk=None):
|
||||
|
|
Loading…
Reference in New Issue