fix: 后台用户按俱乐部分配角色,菜单与多俱乐部权限对齐
This commit is contained in:
@@ -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()) {
|
||||
|
||||
Reference in New Issue
Block a user