feat: Phase 2 Sider 菜单由 FBA 服务端授权驱动 + 菜单/角色播种脚本(Epic #159)

This commit is contained in:
2026-08-06 10:04:36 +08:00
parent 5b673fcdc7
commit 067ba0abe1
4 changed files with 267 additions and 8 deletions
+8 -6
View File
@@ -241,14 +241,14 @@
menu.appendChild(wrap);
}
function renderMenu(user) {
function renderMenu(mods) {
menu.innerHTML = "";
// AntD Menu.ItemGroup 风格分组标题
var group = el("div", "pro-menu-group-title", "功能模块");
menu.appendChild(group);
// 菜单即模块清单,按角色过滤
var mods = user ? IAOP_SESSION.modulesFor(user.role) : [];
mods.forEach(function (m) {
// 菜单即模块清单:Epic #159 Phase 2 起由 session.js menuTree()
// 输出(FBA 服务端按角色授权过滤,本地角色过滤兜底)
(mods || []).forEach(function (m) {
if (m.children && m.children.length) addSubMenu(m);
else addLeafItem(m.key, m.icon, m.title, prefix + m.url);
});
@@ -296,12 +296,12 @@
};
}
/* ---- 用户区(后端优先、本地降级由 session.js 内部处理) --------------- */
/* ---- 用户区 + 菜单(FBA 服务端授权优先,本地角色过滤兜底) ------------- */
IAOP_SESSION.currentUser().then(function (u) {
renderMenu(u);
userBox.innerHTML = "";
if (!u) {
userBox.appendChild(el("span", "pro-tag pro-tag-default", "未登录"));
renderMenu([]);
return;
}
var avatar = el("span", "pro-avatar",
@@ -311,6 +311,8 @@
var color = IAOP_SESSION.ROLE_TAG_COLORS[u.role] || "default";
var label = IAOP_SESSION.ROLE_LABELS[u.role] || u.role;
userBox.appendChild(el("span", "pro-tag pro-tag-" + color, label));
// 菜单异步:FBA token 存在时取服务端授权菜单树(Phase 2)
IAOP_SESSION.menuTree(u).then(renderMenu);
});
bindPageTabs();