32 lines
912 B
JavaScript
32 lines
912 B
JavaScript
import { defineStore } from 'pinia'
|
|
import * as authApi from '@/api/auth'
|
|
|
|
export const useAuthStore = defineStore('auth', {
|
|
state: () => ({
|
|
token: localStorage.getItem('h5_token') || '',
|
|
user: JSON.parse(localStorage.getItem('h5_user') || 'null'),
|
|
}),
|
|
getters: {
|
|
isAuthed: (s) => !!s.token,
|
|
},
|
|
actions: {
|
|
async login(payload) {
|
|
const data = await authApi.login(payload)
|
|
this.token = data.access
|
|
this.user = data.user || null
|
|
localStorage.setItem('h5_token', this.token)
|
|
if (this.user) localStorage.setItem('h5_user', JSON.stringify(this.user))
|
|
},
|
|
async loadUser() {
|
|
this.user = await authApi.fetchCurrentUser()
|
|
localStorage.setItem('h5_user', JSON.stringify(this.user))
|
|
},
|
|
logout() {
|
|
this.token = ''
|
|
this.user = null
|
|
localStorage.removeItem('h5_token')
|
|
localStorage.removeItem('h5_user')
|
|
},
|
|
},
|
|
})
|