Blame view

泰额版/Food Labeling Management App UniApp/src/utils/authSession.ts 2.71 KB
59e51671   “wangming”   1
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) || '') : '',
    }
  }