修复BUG: 子角色授权问题
This commit is contained in:
@@ -180,51 +180,16 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet):
|
|||||||
:return: menu,btns,columns
|
:return: menu,btns,columns
|
||||||
"""
|
"""
|
||||||
params = request.query_params
|
params = request.query_params
|
||||||
role = params.get('role', None)
|
|
||||||
if role is None:
|
|
||||||
return ErrorResponse(msg="未获取到角色信息")
|
|
||||||
is_superuser = request.user.is_superuser
|
is_superuser = request.user.is_superuser
|
||||||
if is_superuser:
|
if is_superuser:
|
||||||
queryset = Menu.objects.filter(status=1, is_catalog=True).values('name', 'id').all()
|
queryset = Menu.objects.filter(status=1, is_catalog=True).values('name', 'id').all()
|
||||||
else:
|
else:
|
||||||
role_id = request.user.role.values_list('id', flat=True)
|
role_id = request.user.role.values_list('id', flat=True)
|
||||||
menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id', flat=True)
|
menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('menu__id', flat=True)
|
||||||
queryset = Menu.objects.filter(status=1, is_catalog=True, id__in=menu_list).values('name', 'id').all()
|
queryset = Menu.objects.filter(status=1, is_catalog=True, id__in=menu_list).values('name', 'id').all()
|
||||||
serializer = RoleMenuSerializer(queryset, many=True, request=request)
|
serializer = RoleMenuSerializer(queryset, many=True, request=request)
|
||||||
data = serializer.data
|
data = serializer.data
|
||||||
return DetailResponse(data=data)
|
return DetailResponse(data=data)
|
||||||
# data = []
|
|
||||||
# if is_superuser:
|
|
||||||
# queryset = Menu.objects.filter(status=1, is_catalog=False).values('name', 'id').all()
|
|
||||||
# else:
|
|
||||||
# role_id = request.user.role.values_list('id', flat=True)
|
|
||||||
# menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id', flat=True)
|
|
||||||
# queryset = Menu.objects.filter(status=1, is_catalog=False, id__in=menu_list).values('name', 'id')
|
|
||||||
# for item in queryset:
|
|
||||||
# parent_list = Menu.get_all_parent(item['id'])
|
|
||||||
# names = [d["name"] for d in parent_list]
|
|
||||||
# completeName = "/".join(names)
|
|
||||||
# isCheck = RoleMenuPermission.objects.filter(
|
|
||||||
# menu__id=item['id'],
|
|
||||||
# role__id=role,
|
|
||||||
# ).exists()
|
|
||||||
# mbCheck = RoleMenuButtonPermission.objects.filter(
|
|
||||||
# menu_button=OuterRef("pk"),
|
|
||||||
# role__id=role,
|
|
||||||
# )
|
|
||||||
# btns = MenuButton.objects.filter(
|
|
||||||
# menu__id=item['id'],
|
|
||||||
# ).annotate(isCheck=Exists(mbCheck)).values('id', 'name', 'value', 'isCheck',
|
|
||||||
# data_range=F('menu_button_permission__data_range'))
|
|
||||||
# dicts = {
|
|
||||||
# 'name': completeName,
|
|
||||||
# 'id': item['id'],
|
|
||||||
# 'isCheck': isCheck,
|
|
||||||
# 'btns': btns,
|
|
||||||
#
|
|
||||||
# }
|
|
||||||
# data.append(dicts)
|
|
||||||
# return DetailResponse(data=data)
|
|
||||||
|
|
||||||
@action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated])
|
@action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated])
|
||||||
def set_role_premission(self, request, pk):
|
def set_role_premission(self, request, pk):
|
||||||
|
|||||||
@@ -26,7 +26,15 @@ export function setRolePremission(roleId:any,data:object) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getDataPermissionRange() {
|
export function getDataPermissionRange(query:object) {
|
||||||
|
return request({
|
||||||
|
url: '/api/system/role_menu_button_permission/data_scope/',
|
||||||
|
method: 'get',
|
||||||
|
params:query
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function getDataPermissionRangeAll() {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/system/role_menu_button_permission/data_scope/',
|
url: '/api/system/role_menu_button_permission/data_scope/',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ watch(
|
|||||||
(val) => {
|
(val) => {
|
||||||
drawerVisible.value = val;
|
drawerVisible.value = val;
|
||||||
getMenuBtnPermission()
|
getMenuBtnPermission()
|
||||||
fetchData()
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
const handleDrawerClose = () => {
|
const handleDrawerClose = () => {
|
||||||
@@ -159,9 +159,9 @@ const getMenuBtnPermission = async () => {
|
|||||||
menuData.value = resMenu.data
|
menuData.value = resMenu.data
|
||||||
}
|
}
|
||||||
|
|
||||||
const fetchData = async () => {
|
const fetchData = async (btnId) => {
|
||||||
try {
|
try {
|
||||||
const resRange = await getDataPermissionRange();
|
const resRange = await getDataPermissionRange({menu_button:btnId});
|
||||||
if (resRange?.code === 2000) {
|
if (resRange?.code === 2000) {
|
||||||
dataPermissionRange.value = resRange.data;
|
dataPermissionRange.value = resRange.data;
|
||||||
}
|
}
|
||||||
@@ -183,6 +183,7 @@ const handleSettingClick = (record: MenusType, btnId: number) => {
|
|||||||
menuCurrent.value = record;
|
menuCurrent.value = record;
|
||||||
menuBtnCurrent.value = btnId;
|
menuBtnCurrent.value = btnId;
|
||||||
dialogVisible.value = true;
|
dialogVisible.value = true;
|
||||||
|
fetchData(btnId)
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleColumnChange = (val: boolean, record: MenusType, btnType: string) => {
|
const handleColumnChange = (val: boolean, record: MenusType, btnType: string) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user