From 4bcaf8d45ffb31c843bf32db85e773e0edb4217f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Sat, 9 Sep 2023 10:42:55 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=A2=9E=E5=AD=97=E6=AE=B5=E6=9D=83?= =?UTF-8?q?=E9=99=90=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/views/role.py | 3 ++- backend/dvadmin/utils/field_permission.py | 29 +++++++++++++++++++++++ web/src/views/system/role/crud.tsx | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 backend/dvadmin/utils/field_permission.py diff --git a/backend/dvadmin/system/views/role.py b/backend/dvadmin/system/views/role.py index 18a3f94..ccbe6d6 100644 --- a/backend/dvadmin/system/views/role.py +++ b/backend/dvadmin/system/views/role.py @@ -15,6 +15,7 @@ from dvadmin.system.views.dept import DeptSerializer from dvadmin.system.views.menu import MenuSerializer from dvadmin.system.views.menu_button import MenuButtonSerializer from dvadmin.utils.crud_mixin import FastCrudMixin +from dvadmin.utils.field_permission import FieldPermissionMixin from dvadmin.utils.json_response import SuccessResponse, DetailResponse from dvadmin.utils.serializers import CustomModelSerializer from dvadmin.utils.validator import CustomUniqueValidator @@ -101,7 +102,7 @@ class MenuButtonPermissionSerializer(CustomModelSerializer): -class RoleViewSet(CustomModelViewSet, FastCrudMixin): +class RoleViewSet(CustomModelViewSet, FastCrudMixin,FieldPermissionMixin): """ 角色管理接口 list:查询 diff --git a/backend/dvadmin/utils/field_permission.py b/backend/dvadmin/utils/field_permission.py new file mode 100644 index 0000000..eb4c6ca --- /dev/null +++ b/backend/dvadmin/utils/field_permission.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from rest_framework.decorators import action +from rest_framework.permissions import IsAuthenticated + +from dvadmin.system.models import Columns +from dvadmin.utils.json_response import DetailResponse +from dvadmin.utils.models import get_custom_app_models + + +class FieldPermissionMixin: + @action(methods=['get'], detail=False,permission_classes=[IsAuthenticated]) + def field_permission(self, request): + """ + 获取字段权限 + """ + finded = False + for app in get_custom_app_models(): + for model in app: + if model['object'] is self.serializer_class.Meta.model: + finded = True + break + if finded: + break + if finded is False: + return [] + data= Columns.objects.filter( + app=model['app'], model=model['model'] + ).values('field_name', 'is_create', 'is_query', 'is_update') + return DetailResponse(data=data) \ No newline at end of file diff --git a/web/src/views/system/role/crud.tsx b/web/src/views/system/role/crud.tsx index 0168070..fe4eb3b 100644 --- a/web/src/views/system/role/crud.tsx +++ b/web/src/views/system/role/crud.tsx @@ -50,7 +50,7 @@ export const createCrudOptions = function ({ width: 260, buttons: { view: { - show: false, + show: true, }, edit: { show: hasPermissions('role:Update'),