| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import { defineStore } from 'pinia'
- import { ref } from 'vue'
- import { login as apiLogin, profile } from '@/services/api'
- import { useStorage } from '@vueuse/core'
- import { useTeamStore } from '@/stores/team'
- export const useUserStore = defineStore('user', () => {
- const token = useStorage('token', '')
- const userInfo = ref({})
- const teamStore = useTeamStore()
- const setToken = (newToken) => {
- token.value = newToken
- }
- const setUserInfo = (info) => {
- userInfo.value = info
- }
- const login = async (username, password) => {
- const response = await apiLogin(username, password)
- setToken(response.token)
- setUserInfo(response.user)
- return response
- }
- const sync = async () => {
- const response = await profile()
- setUserInfo(response)
- }
- const logout = () => {
- token.value = ''
- userInfo.value = {}
- teamStore.reset()
- }
- return {
- token,
- userInfo,
- login,
- logout,
- sync
- }
- })
|