批量更新

This commit is contained in:
hero920103 committed 2026-09-20 00:19:08 +08:00
1 parent fa281363fb
commit c5ed596008
47 files changed
+5385 -1199

No files matched your search

+42
View File
@@ -171,6 +171,48 @@ export async function logoutSSO() {
window.location.href = `${AUTH_BASE}/logout?${params.toString()}`;
}
/**
* 确保本地存在完整的用户信息(含 id / group_id)。
*
* 场景:统一认证上线或 ID 全量迁移后,浏览器里可能残留旧会话——
* 只有 token 没有 userInfo,或 userInfo 缺少 id,菜单等接口会报
*「用户ID不存在」。这里主动补全;若令牌已失效则清空登录态返回 null,
* 由调用方跳转登录。
*/
export async function ensureUserInfo() {
let info = null;
try {
const raw = localStorage.getItem('userInfo');
info = raw ? JSON.parse(raw) : null;
} catch (e) {
info = null;
}
if (info && info.id) {
return info;
}
try {
const data = await fetchUserInfo();
const normalized = {
id: data.id || data.sub || '',
account: data.account || data.mobile || '',
name: data.name || data.nickname || '',
group_id: data.group_id || '',
tid: data.tid || '',
tenant_name: (data.tenants || []).map((t) => t.tenant_name).join('、'),
avatar: data.avatar || '',
type: 'backend'
};
localStorage.setItem('userInfo', JSON.stringify(normalized));
return normalized;
} catch (e) {
// 令牌无效(例如迁移前的旧令牌):清掉本地状态,让调用方重新登录
clearTokens();
localStorage.removeItem('userInfo');
return null;
}
}
/** 拉取当前登录用户(认证中心视角) */
export async function fetchUserInfo() {
const res = await fetch(`${AUTH_BASE}/userinfo`, {