第三次版本迭代更新

This commit is contained in:
andy
2026-06-18 15:54:47 +08:00
parent 10fbd0390c
commit 898a1e1577
14 changed files with 400 additions and 75 deletions

View File

@@ -6,6 +6,7 @@ import {
type OrganizationMemberInfo
} from '@/api/auth'
import type { TokenResponse } from '@/types/api'
import { AUTH_EXPIRED_EVENT, AUTH_STORAGE_KEYS, clearAuthStorage } from '@/utils/authStorage'
import { env } from '@/utils/env'
export interface StaffUser {
@@ -15,13 +16,8 @@ export interface StaffUser {
tenantId?: string | number
}
const TOKEN_KEY = 'hotel_h5_access_token'
const REFRESH_TOKEN_KEY = 'hotel_h5_refresh_token'
const USER_KEY = 'hotel_h5_user'
const MEMBER_KEY = 'hotel_h5_member'
const readUser = (): StaffUser | null => {
const raw = localStorage.getItem(USER_KEY)
const raw = localStorage.getItem(AUTH_STORAGE_KEYS.user)
if (!raw) return null
try {
return JSON.parse(raw) as StaffUser
@@ -31,7 +27,7 @@ const readUser = (): StaffUser | null => {
}
const readMember = (): OrganizationMemberInfo | null => {
const raw = localStorage.getItem(MEMBER_KEY)
const raw = localStorage.getItem(AUTH_STORAGE_KEYS.member)
if (!raw) return null
try {
return JSON.parse(raw) as OrganizationMemberInfo
@@ -41,8 +37,8 @@ const readMember = (): OrganizationMemberInfo | null => {
}
export const useAuthStore = defineStore('auth', () => {
const token = ref(localStorage.getItem(TOKEN_KEY) || '')
const refreshToken = ref(localStorage.getItem(REFRESH_TOKEN_KEY) || '')
const token = ref(localStorage.getItem(AUTH_STORAGE_KEYS.token) || '')
const refreshToken = ref(localStorage.getItem(AUTH_STORAGE_KEYS.refreshToken) || '')
const user = ref<StaffUser | null>(readUser())
const memberInfo = ref<OrganizationMemberInfo | null>(readMember())
@@ -59,11 +55,11 @@ export const useAuthStore = defineStore('auth', () => {
tenantId: payload.tenant_id
}
localStorage.setItem(TOKEN_KEY, token.value)
localStorage.setItem(AUTH_STORAGE_KEYS.token, token.value)
if (refreshToken.value) {
localStorage.setItem(REFRESH_TOKEN_KEY, refreshToken.value)
localStorage.setItem(AUTH_STORAGE_KEYS.refreshToken, refreshToken.value)
}
localStorage.setItem(USER_KEY, JSON.stringify(user.value))
localStorage.setItem(AUTH_STORAGE_KEYS.user, JSON.stringify(user.value))
}
const login = async (phone: string, code: string) => {
@@ -75,22 +71,27 @@ export const useAuthStore = defineStore('auth', () => {
throw new Error('未绑定组织,请联系管理员')
}
memberInfo.value = member
localStorage.setItem(MEMBER_KEY, JSON.stringify(member))
localStorage.setItem(AUTH_STORAGE_KEYS.member, JSON.stringify(member))
} catch (error) {
logout()
throw new Error('未绑定组织,请联系管理员')
}
}
const logout = () => {
const resetState = () => {
token.value = ''
refreshToken.value = ''
user.value = null
memberInfo.value = null
localStorage.removeItem(TOKEN_KEY)
localStorage.removeItem(REFRESH_TOKEN_KEY)
localStorage.removeItem(USER_KEY)
localStorage.removeItem(MEMBER_KEY)
}
const logout = () => {
resetState()
clearAuthStorage()
}
if (typeof window !== 'undefined') {
window.addEventListener(AUTH_EXPIRED_EVENT, resetState)
}
return {