feat: 调整permission以支持后端路由

This commit is contained in:
caoqianming 2024-12-13 13:01:10 +08:00
parent a2f676e58c
commit da54222e20
3 changed files with 54 additions and 20 deletions

View File

@ -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='路由名称'),
),
]

View File

@ -31,6 +31,13 @@ class Permission(ParentModel, BaseModel):
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

View File

@ -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):