import { ref, computed } from 'vue' import { defineStore } from 'pinia' import { useRouter } from 'vue-router' export const useAuthStore = defineStore('auth', () => { const router = useRouter() // 状态 const token = ref(localStorage.getItem('token') || null) const user = ref(null) // 计算属性 const isAuthenticated = computed(() => !!token.value) // 方法 const login = async (credentials) => { try { // TODO: 调用登录API console.log('登录凭证:', credentials) // 模拟登录成功 const mockToken = 'mock-jwt-token-' + Date.now() const mockUser = { id: 1, name: '张三', email: credentials.email, role: 'student', } // 保存认证信息 token.value = mockToken user.value = mockUser localStorage.setItem('token', mockToken) localStorage.setItem('user', JSON.stringify(mockUser)) // 跳转到主页 router.push('/') return { success: true } } catch (error) { console.error('登录失败:', error) return { success: false, error: error.message } } } const logout = () => { // 清除认证信息 token.value = null user.value = null localStorage.removeItem('token') localStorage.removeItem('user') // 跳转到登录页 router.push('/login') } const initializeAuth = () => { const savedToken = localStorage.getItem('token') const savedUser = localStorage.getItem('user') if (savedToken && savedUser) { token.value = savedToken user.value = JSON.parse(savedUser) } } return { token, user, isAuthenticated, login, logout, initializeAuth, } })