fix(system): 修复权限获取 bug
- 优化权限查询逻辑,先判断菜单按钮对象是否存在 - 修复了在某些情况下可能导致权限获取失败的问题
This commit is contained in:
@@ -22,7 +22,7 @@ from django_filters.rest_framework import DjangoFilterBackend
|
|||||||
from django_filters.utils import get_model_field
|
from django_filters.utils import get_model_field
|
||||||
from rest_framework.filters import BaseFilterBackend
|
from rest_framework.filters import BaseFilterBackend
|
||||||
from django_filters.conf import settings
|
from django_filters.conf import settings
|
||||||
from dvadmin.system.models import Dept, ApiWhiteList, RoleMenuButtonPermission
|
from dvadmin.system.models import Dept, ApiWhiteList, RoleMenuButtonPermission, MenuButton
|
||||||
from dvadmin.utils.models import CoreModel
|
from dvadmin.utils.models import CoreModel
|
||||||
|
|
||||||
class CoreModelFilterBankend(BaseFilterBackend):
|
class CoreModelFilterBankend(BaseFilterBackend):
|
||||||
@@ -149,13 +149,16 @@ class DataLevelPermissionsFilter(BaseFilterBackend):
|
|||||||
if _pk: # 判断是否是单例查询
|
if _pk: # 判断是否是单例查询
|
||||||
re_api = re.sub(_pk,'{id}', api)
|
re_api = re.sub(_pk,'{id}', api)
|
||||||
role_id_list = request.user.role.values_list('id', flat=True)
|
role_id_list = request.user.role.values_list('id', flat=True)
|
||||||
role_permission_list=RoleMenuButtonPermission.objects.filter(
|
# 修复权限获取bug
|
||||||
role__in=role_id_list,
|
menu_button_obj = MenuButton.objects.filter(api=re_api, method=method).first()
|
||||||
role__status=1,
|
role_permission_list = []
|
||||||
menu_button__api=re_api,
|
if menu_button_obj:
|
||||||
menu_button__method=method).values(
|
role_permission_list = RoleMenuButtonPermission.objects.filter(
|
||||||
'data_range'
|
role__in=role_id_list,
|
||||||
)
|
role__status=1,
|
||||||
|
menu_button=menu_button_obj).values(
|
||||||
|
'data_range'
|
||||||
|
)
|
||||||
dataScope_list = [] # 权限范围列表
|
dataScope_list = [] # 权限范围列表
|
||||||
for ele in role_permission_list:
|
for ele in role_permission_list:
|
||||||
# 判断用户是否为超级管理员角色/如果拥有[全部数据权限]则返回所有数据
|
# 判断用户是否为超级管理员角色/如果拥有[全部数据权限]则返回所有数据
|
||||||
|
|||||||
Reference in New Issue
Block a user