import { defineStore } from 'pinia' import { api, jApi } from 'boot/axios' export const userStore = defineStore('user', { state: () => { const token = sessionStorage.getItem('vnToken') || localStorage.getItem('vnToken') return { token, id: null, name: null, nickname: null } }, getters: { loggedIn: state => state.token != null }, actions: { async login (user, password, remember) { const params = { user, password } const res = await api.post('Accounts/login', params) if (remember) { localStorage.setItem('vnToken', res.data.token) } else { sessionStorage.setItem('vnToken', res.data.token) } this.$patch({ token: res.data.token, name: user }) }, async logout () { if (this.token != null) { try { await api.post('Accounts/logout') } catch (e) {} localStorage.removeItem('vnToken') sessionStorage.removeItem('vnToken') } this.$reset() }, async loadData () { const userData = await jApi.getObject( 'SELECT id, nickname FROM account.myUser' ) this.$patch({ id: userData.id, nickname: userData.nickname }) } } })