2022-01-08 17:20:46 +08:00
|
|
|
import { defineStore } from 'pinia'
|
|
|
|
|
import { getUser } from '@/api/user'
|
|
|
|
|
import { removeToken } from '@/utils/token'
|
2022-06-17 22:44:32 +08:00
|
|
|
import { toLogin } from '@/utils/auth'
|
2022-01-08 17:20:46 +08:00
|
|
|
|
|
|
|
|
export const useUserStore = defineStore('user', {
|
|
|
|
|
state() {
|
|
|
|
|
return {
|
|
|
|
|
userInfo: {},
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
getters: {
|
|
|
|
|
userId() {
|
|
|
|
|
return this.userInfo?.id
|
|
|
|
|
},
|
|
|
|
|
name() {
|
|
|
|
|
return this.userInfo?.name
|
|
|
|
|
},
|
|
|
|
|
avatar() {
|
|
|
|
|
return this.userInfo?.avatar
|
|
|
|
|
},
|
|
|
|
|
role() {
|
|
|
|
|
return this.userInfo?.role || []
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
actions: {
|
|
|
|
|
async getUserInfo() {
|
|
|
|
|
try {
|
|
|
|
|
const res = await getUser()
|
|
|
|
|
if (res.code === 0) {
|
|
|
|
|
const { id, name, avatar, role } = res.data
|
|
|
|
|
this.userInfo = { id, name, avatar, role }
|
|
|
|
|
return Promise.resolve(res.data)
|
|
|
|
|
} else {
|
2022-06-17 22:44:32 +08:00
|
|
|
return Promise.reject(res)
|
2022-01-08 17:20:46 +08:00
|
|
|
}
|
|
|
|
|
} catch (error) {
|
2022-06-17 22:44:32 +08:00
|
|
|
return Promise.reject(error)
|
2022-01-08 17:20:46 +08:00
|
|
|
}
|
|
|
|
|
},
|
2022-06-17 23:05:57 +08:00
|
|
|
async logout() {
|
2022-01-08 17:20:46 +08:00
|
|
|
removeToken()
|
|
|
|
|
this.userInfo = {}
|
2022-06-17 23:05:57 +08:00
|
|
|
toLogin()
|
2022-01-08 17:20:46 +08:00
|
|
|
},
|
2022-02-17 19:02:05 +08:00
|
|
|
setUserInfo(userInfo = {}) {
|
|
|
|
|
this.userInfo = { ...this.userInfo, ...userInfo }
|
|
|
|
|
},
|
2022-01-08 17:20:46 +08:00
|
|
|
},
|
|
|
|
|
})
|