File size: 1,200 Bytes
8ede856 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import { defineStore } from 'pinia';
import { router } from '@/router';
import axios from 'axios';
export const useAuthStore = defineStore({
id: 'auth',
state: () => ({
// @ts-ignore
username: '',
returnUrl: null
}),
actions: {
async login(username: string, password: string): Promise<void> {
try {
const res = await axios.post('/api/auth/login', {
username: username,
password: password
});
if (res.data.status === 'error') {
return Promise.reject(res.data.message);
}
this.username = res.data.data.username
localStorage.setItem('user', this.username);
localStorage.setItem('token', res.data.data.token);
localStorage.setItem('change_pwd_hint', res.data.data?.change_pwd_hint);
router.push(this.returnUrl || '/dashboard/default');
} catch (error) {
return Promise.reject(error);
}
},
logout() {
this.username = '';
localStorage.removeItem('user');
localStorage.removeItem('token');
router.push('/auth/login');
},
has_token(): boolean {
return !!localStorage.getItem('token');
}
}
});
|