35 lines
735 B
JavaScript
35 lines
735 B
JavaScript
/**
|
|
* 用户状态管理 Store
|
|
*/
|
|
import { create } from 'zustand'
|
|
import { persist, createJSONStorage } from 'zustand/middleware'
|
|
import { clearAuthStorage } from '@/utils/authStorage'
|
|
|
|
const useUserStore = create(
|
|
persist(
|
|
(set) => ({
|
|
user: null,
|
|
token: null,
|
|
|
|
setUser: (user) => set({ user }),
|
|
setToken: (token) => set({ token }),
|
|
|
|
logout: () => {
|
|
clearAuthStorage()
|
|
set({ user: null, token: null })
|
|
},
|
|
|
|
isAuthenticated: () => {
|
|
const state = useUserStore.getState()
|
|
return !!state.token && !!state.user
|
|
},
|
|
}),
|
|
{
|
|
name: 'user-storage',
|
|
storage: createJSONStorage(() => localStorage),
|
|
}
|
|
)
|
|
)
|
|
|
|
export default useUserStore
|