fix(pda): revoke expired sessions before completing logout

This commit is contained in:
2026-10-05 13:41:34 +08:00
parent 7aebbd2a70
commit e699e9d9ba
8 changed files with 192 additions and 18 deletions
+6
View File
@@ -5,6 +5,9 @@ import { decodeAccessToken } from '@/utils/jwt-claims.js'
export { decodeAccessToken } from '@/utils/jwt-claims.js'
let sessionRevision = 0
export function getSessionRevision() { return sessionRevision }
const SESSION_KEY = 'pda-auth-session'
const LOGIN_PREFERENCE_KEY = 'pda-login-account-preference'
@@ -53,6 +56,7 @@ function persistSession() {
}
export function signIn(account, warehouse, options = {}) {
sessionRevision++
session.currentUser = { id: String(account.id), name: account.name, role: account.role, roles: account.roles || [], warehouse, warehouseId: account.warehouseId || null, domesticWarehouseId: account.domesticWarehouseId || null, warehouseBound: Boolean(account.domesticWarehouseId) }
session.token = options.token || account.token || ''
session.refreshToken = options.refreshToken || account.refreshToken || ''
@@ -144,6 +148,7 @@ export function restoreSession() {
tenantId: claims.tenant_id == null ? (saved.tenantId || '') : String(claims.tenant_id),
apiBase: saved.apiBase || PLATFORM_API_ROOT
})
sessionRevision++
persistSession()
return true
} catch (_) {
@@ -153,6 +158,7 @@ export function restoreSession() {
}
export function signOut() {
sessionRevision++
session.currentUser = null
session.token = ''
session.refreshToken = ''