fix: filter out invisible menus and clean up ghost nodes in permission tree
This commit is contained in:
@ -11,8 +11,8 @@ class PermissionService:
|
|||||||
获取完整的权限树(菜单嵌套菜单 + 菜单包含元素)
|
获取完整的权限树(菜单嵌套菜单 + 菜单包含元素)
|
||||||
供前端权限配置页面展示
|
供前端权限配置页面展示
|
||||||
"""
|
"""
|
||||||
# 1. 获取所有菜单 (按 parent_id 和 sort_order 排序,保证父子处理顺序)
|
# 1. 获取所有可见菜单 (按 parent_id 和 sort_order 排序,保证父子处理顺序)
|
||||||
menus = SysMenu.query.order_by(SysMenu.parent_id, SysMenu.sort_order).all()
|
menus = SysMenu.query.filter(SysMenu.is_visible == True).order_by(SysMenu.parent_id, SysMenu.sort_order).all()
|
||||||
# 2. 获取所有元素
|
# 2. 获取所有元素
|
||||||
elements = SysElement.query.all()
|
elements = SysElement.query.all()
|
||||||
|
|
||||||
@ -64,8 +64,8 @@ class PermissionService:
|
|||||||
try:
|
try:
|
||||||
# === 新增逻辑:超级管理员上帝模式 ===
|
# === 新增逻辑:超级管理员上帝模式 ===
|
||||||
if role_code == 'SUPER_ADMIN':
|
if role_code == 'SUPER_ADMIN':
|
||||||
# 直接获取所有菜单和元素,无视配置表
|
# 直接获取所有可见菜单和元素,无视配置表
|
||||||
all_menus = [m.code for m in SysMenu.query.all()]
|
all_menus = [m.code for m in SysMenu.query.filter(SysMenu.is_visible == True).all()]
|
||||||
all_elements = [e.code for e in SysElement.query.all()]
|
all_elements = [e.code for e in SysElement.query.all()]
|
||||||
return {
|
return {
|
||||||
'menus': all_menus,
|
'menus': all_menus,
|
||||||
|
|||||||
Reference in New Issue
Block a user