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

This commit is contained in:
caoqianming 2024-12-13 13:01:10 +08:00
parent 6c73245c03
commit 05c20c10bc
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) sort = models.PositiveSmallIntegerField('排序标记', default=1)
codes = models.JSONField('权限标识', default=list, null=True, blank=True) 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): def __str__(self):
return self.name return self.name

View File

@ -21,7 +21,7 @@ from apps.system.filters import DeptFilterSet, UserFilterSet
# from django_q.models import Task as QTask, Schedule as QSchedule # from django_q.models import Task as QTask, Schedule as QSchedule
from apps.utils.mixins import (CustomCreateModelMixin, MyLoggingMixin) from apps.utils.mixins import (CustomCreateModelMixin, MyLoggingMixin)
from django.conf import settings 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 apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from server.celery import app as celery_app from server.celery import app as celery_app
from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User, from .models import (Dept, Dictionary, DictType, File, Permission, Post, PostRole, Role, User,
@ -34,7 +34,8 @@ from .serializers import (ApkSerializer, DeptCreateUpdateSerializer, DeptSeriali
PTaskSerializer, PTaskCreateUpdateSerializer, PTaskResultSerializer, PTaskSerializer, PTaskCreateUpdateSerializer, PTaskResultSerializer,
RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer, RoleCreateUpdateSerializer, RoleSerializer, TaskRunSerializer,
UserCreateSerializer, UserListSerializer, UserPostCreateSerializer, UserCreateSerializer, UserListSerializer, UserPostCreateSerializer,
UserPostSerializer, UserUpdateSerializer, MyScheduleCreateSerializer, MyScheduleSerializer) UserPostSerializer, UserUpdateSerializer, UserFullInfoSerializer,
MyScheduleCreateSerializer, MyScheduleSerializer)
from rest_framework.viewsets import GenericViewSet from rest_framework.viewsets import GenericViewSet
from cron_descriptor import get_description from cron_descriptor import get_description
import locale import locale
@ -491,24 +492,7 @@ class UserViewSet(CustomModelViewSet):
获取登录用户信息 获取登录用户信息
""" """
user = request.user user = request.user
perms = get_user_perms_map(user, update_cache=True) return Response(UserFullInfoSerializer(user).data)
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)
@action(methods=['post'], detail=False, permission_classes=[IsAuthenticated]) @action(methods=['post'], detail=False, permission_classes=[IsAuthenticated])
def bind_wxmp(self, request, pk=None): def bind_wxmp(self, request, pk=None):