authSession.ts
2.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import type { UsAppBoundLocationDto } from '../types/usAppBound'
const KEY_ACCESS = 'access_token'
const KEY_REFRESH = 'refresh_token'
const KEY_LOCATIONS = 'bound_locations_json'
const KEY_LOGGED = 'isLoggedIn'
const KEY_USER = 'userName'
const KEY_EMAIL = 'user_email'
const KEY_REMEMBER = 'login_remember_me'
const KEY_SAVED_EMAIL = 'login_saved_email'
const KEY_SAVED_PASSWORD = 'login_saved_password'
export function saveAuthSession(payload: {
token: string
refreshToken: string
locations: UsAppBoundLocationDto[]
/** 展示用:无姓名接口时用邮箱本地部分或全文 */
displayName: string
email: string
}): void {
uni.setStorageSync(KEY_ACCESS, payload.token)
uni.setStorageSync(KEY_REFRESH, payload.refreshToken)
uni.setStorageSync(KEY_LOCATIONS, JSON.stringify(payload.locations ?? []))
uni.setStorageSync(KEY_LOGGED, 'true')
uni.setStorageSync(KEY_USER, payload.displayName)
uni.setStorageSync(KEY_EMAIL, payload.email)
}
export function setBoundLocations(locations: UsAppBoundLocationDto[]): void {
uni.setStorageSync(KEY_LOCATIONS, JSON.stringify(locations ?? []))
}
export function getBoundLocations(): UsAppBoundLocationDto[] {
try {
const raw = uni.getStorageSync(KEY_LOCATIONS)
if (!raw || typeof raw !== 'string') return []
const parsed = JSON.parse(raw) as unknown
if (!Array.isArray(parsed)) return []
return parsed as UsAppBoundLocationDto[]
} catch {
return []
}
}
export function clearAuthSession(): void {
uni.removeStorageSync(KEY_ACCESS)
uni.removeStorageSync(KEY_REFRESH)
uni.removeStorageSync(KEY_LOCATIONS)
uni.removeStorageSync(KEY_LOGGED)
uni.removeStorageSync(KEY_USER)
uni.removeStorageSync(KEY_EMAIL)
uni.removeStorageSync('storeId')
uni.removeStorageSync('storeName')
uni.removeStorageSync('storeLocationCode')
}
export function isLoggedIn(): boolean {
return !!uni.getStorageSync(KEY_ACCESS) && uni.getStorageSync(KEY_LOGGED) === 'true'
}
export function getAccessToken(): string {
return uni.getStorageSync(KEY_ACCESS) || ''
}
export function saveRememberPreference(remember: boolean, email: string, password: string): void {
uni.setStorageSync(KEY_REMEMBER, remember ? '1' : '0')
if (remember) {
uni.setStorageSync(KEY_SAVED_EMAIL, email)
uni.setStorageSync(KEY_SAVED_PASSWORD, password)
} else {
uni.removeStorageSync(KEY_SAVED_EMAIL)
uni.removeStorageSync(KEY_SAVED_PASSWORD)
}
}
export function loadSavedCredentials(): { email: string; password: string; remember: boolean } {
const remember = uni.getStorageSync(KEY_REMEMBER) === '1'
return {
remember,
email: remember ? (uni.getStorageSync(KEY_SAVED_EMAIL) || '') : '',
password: remember ? (uni.getStorageSync(KEY_SAVED_PASSWORD) || '') : '',
}
}