mirror of
https://gitee.com/niucloud-team/niucloud.git
synced 2025-12-15 19:12:48 +00:00
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import { defineStore } from 'pinia'
|
|
import { setToken, removeToken, redirect } from '@/utils/common'
|
|
import { getMemberInfo } from '@/api/member'
|
|
import { logout } from '@/api/auth'
|
|
|
|
interface Member {
|
|
token : string | null
|
|
info : AnyObject | null
|
|
}
|
|
|
|
const useMemberStore = defineStore('member', {
|
|
state: () : Member => {
|
|
return {
|
|
token: uni.getStorageSync(import.meta.env.VITE_REQUEST_STORAGE_TOKEN_KEY),
|
|
info: null
|
|
}
|
|
},
|
|
actions: {
|
|
async setToken(token : string) {
|
|
this.token = token
|
|
setToken(token)
|
|
await this.getMemberInfo()
|
|
},
|
|
async getMemberInfo() {
|
|
await getMemberInfo()
|
|
.then((res : any) => {
|
|
this.info = res.data
|
|
})
|
|
.catch(async () => {
|
|
await this.logout()
|
|
})
|
|
},
|
|
async logout(isRedirect : boolean = false) {
|
|
await logout().then(() => {
|
|
this.$reset()
|
|
removeToken()
|
|
isRedirect && redirect({ url: '/pages/index/index' })
|
|
}).catch(() => {
|
|
this.$reset()
|
|
removeToken()
|
|
isRedirect && redirect({ url: '/pages/index/index' })
|
|
})
|
|
}
|
|
}
|
|
})
|
|
|
|
export default useMemberStore |