2022-04-18 19:14:38 +08:00
|
|
|
|
import { defineStore } from 'pinia';
|
2022-05-22 17:18:13 +08:00
|
|
|
|
import Cookies from 'js-cookie';
|
2022-04-18 19:14:38 +08:00
|
|
|
|
import { Session } from '/@/utils/storage';
|
|
|
|
|
|
2022-04-25 19:05:12 +08:00
|
|
|
|
/**
|
|
|
|
|
* 用户信息
|
|
|
|
|
* @methods setUserInfos 设置用户信息
|
|
|
|
|
*/
|
2022-04-18 19:14:38 +08:00
|
|
|
|
export const useUserInfo = defineStore('userInfo', {
|
2022-11-29 22:03:40 +08:00
|
|
|
|
state: (): UserInfosState => ({
|
2022-04-18 19:14:38 +08:00
|
|
|
|
userInfos: {
|
2022-05-22 17:18:13 +08:00
|
|
|
|
userName: '',
|
2022-04-18 19:14:38 +08:00
|
|
|
|
photo: '',
|
|
|
|
|
time: 0,
|
2022-05-22 17:18:13 +08:00
|
|
|
|
roles: [],
|
|
|
|
|
authBtnList: [],
|
2022-04-18 19:14:38 +08:00
|
|
|
|
},
|
|
|
|
|
}),
|
|
|
|
|
actions: {
|
2022-05-22 17:18:13 +08:00
|
|
|
|
async setUserInfos() {
|
|
|
|
|
// 存储用户信息到浏览器缓存
|
|
|
|
|
if (Session.get('userInfo')) {
|
|
|
|
|
this.userInfos = Session.get('userInfo');
|
2022-04-18 19:14:38 +08:00
|
|
|
|
} else {
|
2023-04-11 22:04:59 +08:00
|
|
|
|
const userInfos = <UserInfos>await this.getApiUserInfo();
|
2022-05-22 17:18:13 +08:00
|
|
|
|
this.userInfos = userInfos;
|
2022-04-18 19:14:38 +08:00
|
|
|
|
}
|
|
|
|
|
},
|
2022-07-10 19:37:39 +08:00
|
|
|
|
// 模拟接口数据
|
|
|
|
|
// https://gitee.com/lyt-top/vue-next-admin/issues/I5F1HP
|
|
|
|
|
async getApiUserInfo() {
|
|
|
|
|
return new Promise((resolve) => {
|
|
|
|
|
setTimeout(() => {
|
|
|
|
|
// 模拟数据,请求接口时,记得删除多余代码及对应依赖的引入
|
|
|
|
|
const userName = Cookies.get('userName');
|
|
|
|
|
// 模拟数据
|
|
|
|
|
let defaultRoles: Array<string> = [];
|
|
|
|
|
let defaultAuthBtnList: Array<string> = [];
|
|
|
|
|
// admin 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏
|
|
|
|
|
let adminRoles: Array<string> = ['admin'];
|
|
|
|
|
// admin 按钮权限标识
|
|
|
|
|
let adminAuthBtnList: Array<string> = ['btn.add', 'btn.del', 'btn.edit', 'btn.link'];
|
|
|
|
|
// test 页面权限标识,对应路由 meta.roles,用于控制路由的显示/隐藏
|
|
|
|
|
let testRoles: Array<string> = ['common'];
|
|
|
|
|
// test 按钮权限标识
|
|
|
|
|
let testAuthBtnList: Array<string> = ['btn.add', 'btn.link'];
|
|
|
|
|
// 不同用户模拟不同的用户权限
|
|
|
|
|
if (userName === 'admin') {
|
|
|
|
|
defaultRoles = adminRoles;
|
|
|
|
|
defaultAuthBtnList = adminAuthBtnList;
|
|
|
|
|
} else {
|
|
|
|
|
defaultRoles = testRoles;
|
|
|
|
|
defaultAuthBtnList = testAuthBtnList;
|
|
|
|
|
}
|
|
|
|
|
// 用户信息模拟数据
|
|
|
|
|
const userInfos = {
|
|
|
|
|
userName: userName,
|
|
|
|
|
photo:
|
|
|
|
|
userName === 'admin'
|
|
|
|
|
? 'https://img2.baidu.com/it/u=1978192862,2048448374&fm=253&fmt=auto&app=138&f=JPEG?w=504&h=500'
|
|
|
|
|
: 'https://img2.baidu.com/it/u=2370931438,70387529&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
|
|
|
|
|
time: new Date().getTime(),
|
|
|
|
|
roles: defaultRoles,
|
|
|
|
|
authBtnList: defaultAuthBtnList,
|
|
|
|
|
};
|
2023-03-26 17:43:05 +08:00
|
|
|
|
Session.set('userInfo', userInfos);
|
2022-07-10 19:37:39 +08:00
|
|
|
|
resolve(userInfos);
|
2022-11-16 15:34:23 +08:00
|
|
|
|
}, 0);
|
2022-07-10 19:37:39 +08:00
|
|
|
|
});
|
|
|
|
|
},
|
2022-04-18 19:14:38 +08:00
|
|
|
|
},
|
|
|
|
|
});
|