niucloud/web/stores/member.ts
wangchen147 026d5fa334 0.0.9
2024-01-25 17:48:14 +08:00

44 lines
1.1 KiB
TypeScript

import { defineStore } from 'pinia'
import { getMemberInfo } from '@/app/api/member'
import { logout } from '@/app/api/auth'
interface Member {
token: string | null
info: Record<string, any> | null
}
const useMemberStore = defineStore('member', {
state: (): Member => {
return {
token: useCookie('token').value,
info: null
}
},
actions: {
async setToken(token: string) {
this.token = token
useCookie('token').value = token
await this.getMemberInfo()
},
async getMemberInfo() {
if (!this.token) return
await getMemberInfo()
.then((res: any) => {
this.info = res.data
})
.catch((err) => {
this.logout()
})
},
logout() {
if (!this.token) return
this.token = ''
this.info = null
useCookie('token').value = null
logout().then().catch()
}
}
})
export default useMemberStore