| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import { defineStore } from 'pinia'
- import { ref } from 'vue'
- import type { AdminInfo } from '@/types'
- import {
- getToken,
- setToken,
- removeToken,
- setRefreshToken,
- removeRefreshToken
- } from '@/utils/auth'
- import { login, logout, getInfo } from '@/api/login'
- import type { LoginParams } from '@/types'
- export const useUserStore = defineStore('user', () => {
- const token = ref<string>(getToken() || '')
- const userInfo = ref<AdminInfo | null>(null)
- async function loginAction(loginForm: LoginParams) {
- const res = await login(loginForm)
- if (res.code === 200 && res.data) {
- // 新 API 返回 token 和 admin
- const { token: accessToken, refreshToken, admin } = res.data
- token.value = accessToken
- setToken(accessToken)
- if (refreshToken) {
- setRefreshToken(refreshToken)
- }
- // 设置用户信息
- if (admin) {
- userInfo.value = admin
- }
- }
- return res
- }
- async function getUserInfo() {
- const res = await getInfo()
- if (res.code === 200 && res.data) {
- userInfo.value = res.data
- }
- return res
- }
- async function logoutAction() {
- try {
- await logout()
- } finally {
- token.value = ''
- userInfo.value = null
- removeToken()
- removeRefreshToken()
- }
- }
- function resetToken() {
- token.value = ''
- userInfo.value = null
- removeToken()
- removeRefreshToken()
- }
- return {
- token,
- userInfo,
- loginAction,
- getUserInfo,
- logoutAction,
- resetToken
- }
- })
|