55 lines
1009 B
TypeScript
55 lines
1009 B
TypeScript
export type AuthUser = {
|
|
id: number
|
|
username: string
|
|
nickname: string
|
|
avatar: string
|
|
status: number
|
|
roles: string[]
|
|
}
|
|
|
|
export type AuthSession = {
|
|
accessToken: string
|
|
expiresAt?: string
|
|
user: AuthUser
|
|
permissions: string[]
|
|
roles: string[]
|
|
}
|
|
|
|
const SESSION_STORAGE_KEY = "cs-ai-agent-session"
|
|
|
|
function hasWindow() {
|
|
return typeof window !== "undefined"
|
|
}
|
|
|
|
export function readSession(): AuthSession | null {
|
|
if (!hasWindow()) {
|
|
return null
|
|
}
|
|
|
|
const raw = window.localStorage.getItem(SESSION_STORAGE_KEY)
|
|
if (!raw) {
|
|
return null
|
|
}
|
|
|
|
try {
|
|
return JSON.parse(raw) as AuthSession
|
|
} catch {
|
|
window.localStorage.removeItem(SESSION_STORAGE_KEY)
|
|
return null
|
|
}
|
|
}
|
|
|
|
export function writeSession(session: AuthSession) {
|
|
if (!hasWindow()) {
|
|
return
|
|
}
|
|
window.localStorage.setItem(SESSION_STORAGE_KEY, JSON.stringify(session))
|
|
}
|
|
|
|
export function clearSession() {
|
|
if (!hasWindow()) {
|
|
return
|
|
}
|
|
window.localStorage.removeItem(SESSION_STORAGE_KEY)
|
|
}
|