fix: 后台用户按俱乐部分配角色,菜单与多俱乐部权限对齐

This commit is contained in:
XingQue
2026-07-06 19:14:01 +08:00
parent bb540ced45
commit 1c57cea841
11 changed files with 164 additions and 87 deletions

View File

@@ -3,7 +3,7 @@ const CLUB_SCOPE_KEY = 'admin_club_scope';
const CLUB_CONTEXT_KEY = 'admin_club_context';
const MENU_ACCESS_KEY = 'kefu_menu_access';
const MENU_SESSION_KEY = 'kefu_menu_session_v';
const MENU_SESSION_VERSION = '19';
const MENU_SESSION_VERSION = '21';
const DEFAULT_CLUB_ID = 'xq';
let menuAccessInflight = null;
@@ -59,6 +59,10 @@ export function mergeServerClubContext(serverCtx) {
}
}
if (prevClubId && prevClubId !== clubId) {
clearMenuAccess();
}
setAdminClubContext(merged);
return merged;
}
@@ -253,6 +257,21 @@ export function canSwitchClubByMenu() {
return !!access?.can_switch_club;
}
export async function syncClubContextFromServer(fetcher) {
const prevClubId = getAdminClubId();
try {
const data = await fetcher();
if (data) {
mergeServerClubContext(data);
if (getAdminClubId() !== prevClubId) {
clearMenuAccess();
}
}
} catch (e) {
console.error('syncClubContextFromServer failed:', e);
}
}
export async function ensureMenuAccess(fetcher, { force = false } = {}) {
if (!localStorage.getItem('token')) return getMenuAccess();
if (!force && isMenuSessionFresh() && getMenuAccess()) {