65 lines
1.1 KiB
TypeScript
65 lines
1.1 KiB
TypeScript
import { acceptHMRUpdate, defineStore } from 'pinia';
|
||
|
||
interface BasicUserInfo {
|
||
[key: string]: any;
|
||
/**
|
||
* 头像
|
||
*/
|
||
avatar: string;
|
||
/**
|
||
* 用户昵称
|
||
*/
|
||
realName: string;
|
||
/**
|
||
* 用户角色(TODO 已废弃,add by 芋艿)
|
||
*/
|
||
roles?: string[];
|
||
/**
|
||
* 用户id
|
||
*/
|
||
userId: string;
|
||
/**
|
||
* 用户名
|
||
*/
|
||
username: string;
|
||
}
|
||
|
||
interface AccessState {
|
||
/**
|
||
* 用户信息
|
||
*/
|
||
userInfo: BasicUserInfo | null;
|
||
/**
|
||
* 用户角色
|
||
*/
|
||
userRoles: string[];
|
||
}
|
||
|
||
/**
|
||
* @zh_CN 用户信息相关
|
||
*/
|
||
export const useUserStore = defineStore('core-user', {
|
||
actions: {
|
||
setUserInfo(userInfo: BasicUserInfo | null) {
|
||
// 设置用户信息
|
||
this.userInfo = userInfo;
|
||
// 设置角色信息
|
||
const roles = userInfo?.roles ?? [];
|
||
this.setUserRoles(roles);
|
||
},
|
||
setUserRoles(roles: string[]) {
|
||
this.userRoles = roles;
|
||
},
|
||
},
|
||
state: (): AccessState => ({
|
||
userInfo: null,
|
||
userRoles: [],
|
||
}),
|
||
});
|
||
|
||
// 解决热更新问题
|
||
const hot = import.meta.hot;
|
||
if (hot) {
|
||
hot.accept(acceptHMRUpdate(useUserStore, hot));
|
||
}
|