You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.5 KiB
69 lines
1.5 KiB
2 years ago
|
import { defineStore } from 'pinia';
|
||
|
import http from '@/jtools/request/index';
|
||
|
import constants from '@/jtools/constants';
|
||
|
import storage from '@/jtools/storage';
|
||
|
|
||
|
const user = defineStore({
|
||
|
id: 'user',
|
||
|
state: () => ({
|
||
|
token: storage.get('token'),
|
||
|
isLogin: storage.get('isLogin'), // 是否登陆
|
||
|
userInfo: storage.get('userInfo'), // 用户信息
|
||
|
}),
|
||
|
|
||
|
actions: {
|
||
|
// 登录
|
||
|
showAuth() {
|
||
|
// router.replaceAll('/pages/login/login');
|
||
|
},
|
||
|
|
||
|
// 获取个人信息
|
||
|
async getInfo() {
|
||
|
const { error, data } = await userApi.profile();
|
||
|
if (error !== 0) return;
|
||
|
this.userInfo = data;
|
||
|
return Promise.resolve(data);
|
||
|
},
|
||
|
|
||
|
|
||
|
// 设置token
|
||
|
setToken(token = '') {
|
||
|
if (token === '') {
|
||
|
this.isLogin = false;
|
||
|
this.token = ''
|
||
|
this.userInfo = {}
|
||
|
storage.set('token', '');
|
||
|
storage.set('isLogin', false);
|
||
|
storage.set('userInfo', {});
|
||
|
} else {
|
||
|
this.isLogin = true;
|
||
|
this.token = token
|
||
|
storage.set('token', token);
|
||
|
storage.set('isLogin', true);
|
||
|
}
|
||
|
return this.isLogin;
|
||
|
},
|
||
|
|
||
|
// 重置用户默认数据
|
||
|
resetUserData() {
|
||
|
this.setToken();
|
||
|
},
|
||
|
// 登出
|
||
|
async logout(force = false) {
|
||
|
if (!force) {
|
||
|
const { error } = await userApi.logout();
|
||
|
if (error === 0) {
|
||
|
this.resetUserData();
|
||
|
}
|
||
|
}
|
||
|
if (force) {
|
||
|
this.resetUserData();
|
||
|
}
|
||
|
|
||
|
return !this.isLogin;
|
||
|
},
|
||
|
},
|
||
|
});
|
||
|
|
||
|
export default user;
|