This commit is contained in:
2026-09-29 18:47:52 +08:00
parent 0aaf855ce2
commit b118189e4e
4 changed files with 18 additions and 11 deletions
+8 -1
View File
@@ -137,7 +137,14 @@ export function signInWithTokens(tokens) {
export function replaceTokens(tokens) {
if (!tokens?.accessToken) throw new Error('刷新响应缺少访问令牌')
const pair = validatePdaToken(tokens.accessToken, tokens)
if (session.currentUser && (String(session.currentUser.id) !== claimId(pair.claims, 'user_id') || String(session.currentUser.warehouseId) !== pair.warehouseId)) throw new Error('作业主体或绑定仓库已变更,请重新登录')
if (session.currentUser) {
const previousClaims = decodeAccessToken(session.token)
const identityChanged = ['user_id', 'membership_id', 'tenant_id', 'app_code', 'overseas_warehouse_id']
.some((name) => claimId(previousClaims, name) !== claimId(pair.claims, name))
if (identityChanged || String(session.currentUser.id) !== claimId(pair.claims, 'user_id') || String(session.currentUser.warehouseId) !== pair.warehouseId) {
throw new Error('作业主体或绑定仓库已变更,请重新登录')
}
}
const user = userFromClaims(pair, session.currentUser)
const nextRefreshToken = tokens.refreshToken || session.refreshToken
// Validate the complete replacement before mutating reactive or persisted session state.