| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- import { create } from 'zustand'
- import { adminApi } from '../api/admin'
- interface AuthState {
- isAuthenticated: boolean
- adminInfo: any | null
- login: (username: string, password: string) => Promise<void>
- logout: () => Promise<void>
- checkAuth: () => void
- }
- export const useAuthStore = create<AuthState>((set) => ({
- isAuthenticated: !!localStorage.getItem('admin_token'),
- adminInfo: null,
- login: async (username: string, password: string) => {
- try {
- const response = await adminApi.login(username, password)
- console.log('Login response:', response)
- // 响应拦截器返回的是 {code: 200, msg: "...", data: {token: "...", admin: {...}}}
- // 需要访问 response.data 来获取 token 和 admin
- const data = response?.data || response
- if (data?.token) {
- localStorage.setItem('admin_token', data.token)
- set({
- isAuthenticated: true,
- adminInfo: data.admin,
- })
- } else {
- throw new Error('登录失败:未获取到 token')
- }
- } catch (error) {
- console.error('Login error:', error)
- throw error
- }
- },
- logout: async () => {
- try {
- await adminApi.logout()
- } catch (error) {
- console.error('Logout error:', error)
- } finally {
- localStorage.removeItem('admin_token')
- set({
- isAuthenticated: false,
- adminInfo: null,
- })
- }
- },
- checkAuth: () => {
- const token = localStorage.getItem('admin_token')
- set({ isAuthenticated: !!token })
- },
- }))
|