42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
import { genealogyContext } from "./genealogy/context.js";
|
|
|
|
const TOKEN_KEY = 'jiapu_token'
|
|
|
|
const normalizeToken = (token) => {
|
|
if (typeof token !== 'string' || !token || token.trim() !== token) {
|
|
throw new TypeError('会话令牌必须是无边界空白的非空字符串')
|
|
}
|
|
return token
|
|
}
|
|
|
|
const readToken = () => {
|
|
const stored = uni.getStorageSync(TOKEN_KEY)
|
|
if (stored === '' || stored === null || stored === undefined) return ''
|
|
try {
|
|
return normalizeToken(stored)
|
|
} catch {
|
|
// 损坏令牌与其账号作用域下的当前家谱必须一起失效,避免页面继续展示
|
|
// 上一个账号的领域上下文。
|
|
uni.removeStorageSync(TOKEN_KEY)
|
|
genealogyContext.clearCurrentGenealogyId()
|
|
return ''
|
|
}
|
|
}
|
|
|
|
export const session = {
|
|
getToken: readToken,
|
|
saveToken: (token) => {
|
|
const normalizedToken = normalizeToken(token)
|
|
const previousToken = readToken()
|
|
if (previousToken !== normalizedToken) {
|
|
genealogyContext.clearCurrentGenealogyId()
|
|
}
|
|
uni.setStorageSync(TOKEN_KEY, normalizedToken)
|
|
return normalizedToken
|
|
},
|
|
clear: () => {
|
|
uni.removeStorageSync(TOKEN_KEY)
|
|
genealogyContext.clearCurrentGenealogyId()
|
|
}
|
|
}
|