项目初始化
This commit is contained in:
60
frontend/src/stores/admin.ts
Normal file
60
frontend/src/stores/admin.ts
Normal file
@@ -0,0 +1,60 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref } from 'vue'
|
||||
import { login as loginApi } from '@/api/admin'
|
||||
|
||||
export const useAdminStore = defineStore('admin', () => {
|
||||
const token = ref<string | null>(localStorage.getItem('admin_token'))
|
||||
const userInfo = ref<any>(JSON.parse(localStorage.getItem('admin_userInfo') || 'null'))
|
||||
|
||||
const setToken = (newToken: string) => {
|
||||
token.value = newToken
|
||||
localStorage.setItem('admin_token', newToken)
|
||||
}
|
||||
|
||||
const setUserInfo = (info: any) => {
|
||||
userInfo.value = info
|
||||
localStorage.setItem('admin_userInfo', JSON.stringify(info))
|
||||
}
|
||||
|
||||
const clearToken = () => {
|
||||
token.value = null
|
||||
localStorage.removeItem('admin_token')
|
||||
}
|
||||
|
||||
const clearUserInfo = () => {
|
||||
userInfo.value = null
|
||||
localStorage.removeItem('admin_userInfo')
|
||||
}
|
||||
|
||||
const login = async (username: string, password: string) => {
|
||||
try {
|
||||
const response = await loginApi(username, password)
|
||||
const data = response.data
|
||||
if (data.success && data.data) {
|
||||
setToken(data.data.token)
|
||||
setUserInfo(data.data.user)
|
||||
return { success: true, message: data.message || '登录成功' }
|
||||
}
|
||||
return { success: false, message: data.message || '登录失败' }
|
||||
} catch (error: any) {
|
||||
console.error('登录失败:', error)
|
||||
return { success: false, message: error.response?.data?.message || '网络错误,请稍后重试' }
|
||||
}
|
||||
}
|
||||
|
||||
const logout = () => {
|
||||
clearToken()
|
||||
clearUserInfo()
|
||||
}
|
||||
|
||||
return {
|
||||
token,
|
||||
userInfo,
|
||||
setToken,
|
||||
setUserInfo,
|
||||
clearToken,
|
||||
clearUserInfo,
|
||||
login,
|
||||
logout
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user