fbab5486创建于 4 天前历史提交
import { defineStore } from 'pinia'
import { ref, computed } from 'vue'
import axios from '../utils/axios'

export const useUserStore = defineStore('user', () => {
  const token = ref(localStorage.getItem('token') || '')
  const admin = ref(JSON.parse(localStorage.getItem('admin') || 'null'))

  const isLoggedIn = computed(() => !!token.value)

  async function login(username, password) {
    const res = await axios.post('/api/admin/login', { username, password })
    if (res.code === 200) {
      token.value = res.data.token
      admin.value = res.data.admin
      localStorage.setItem('token', res.data.token)
      localStorage.setItem('admin', JSON.stringify(res.data.admin))
      return true
    }
    throw new Error(res.message || '登录失败')
  }

  function logout() {
    token.value = ''
    admin.value = null
    localStorage.removeItem('token')
    localStorage.removeItem('admin')
  }

  return { token, admin, isLoggedIn, login, logout }
})