feat(admin): 实现动态路由菜单并修复rbac菜单树构建问题
- 修复rbac.py中菜单树构建逻辑,将`elif not menu.parentId`改为`else`,避免父菜单不存在时子菜单丢失 - 新增后端`/api/admin/system/routers`接口,作为动态路由菜单的API - 前端新增`getRouters` API并整合到用户信息加载流程 - 添加菜单扁平化工具函数,更新路由注册逻辑以支持嵌套路由 - 新增相关测试用例并更新API和集成文档
This commit is contained in:
1 parent
f087663b5b
commit
2c8c327de7
12 files changed
+108
-5
No files matched your search
@@ -220,3 +220,13 @@ def test_dynamic_menu_tree_preserves_parent_order_and_button_permissions():
|
||||
assert DATA_SCOPE_VALUES == {"all", "dept", "dept_and_children", "custom_dept", "self"}
|
||||
assert [item["id"] for item in tree] == ["root"]
|
||||
assert tree[0]["children"][0]["permission"] == "home:edit"
|
||||
|
||||
|
||||
def test_dynamic_menu_tree_keeps_granted_menu_when_parent_is_not_in_scope():
|
||||
menus = [
|
||||
AdminMenu(id="page", parentId="missing-parent", name="受限页面", type="page", path="/restricted", sortOrder=10, isVisible=True, isActive=True),
|
||||
]
|
||||
|
||||
tree = build_menu_tree(menus)
|
||||
|
||||
assert [item["id"] for item in tree] == ["page"]
|
||||
Reference in new issue
Block a user