refactor: ♻️ userStore 代码重构优化
Former-commit-id: ef31b8420a48a91dd2449d62fb615941d528bf24
This commit is contained in:
@@ -11,16 +11,15 @@ import { UserInfo } from "@/api/user/types";
|
||||
import { useStorage } from "@vueuse/core";
|
||||
|
||||
export const useUserStore = defineStore("user", () => {
|
||||
// state
|
||||
const userId = ref();
|
||||
const user: UserInfo = {
|
||||
roles: [],
|
||||
perms: [],
|
||||
};
|
||||
|
||||
const token = useStorage("accessToken", "");
|
||||
const nickname = ref("");
|
||||
const avatar = ref("");
|
||||
const roles = ref<Array<string>>([]); // 用户角色编码集合 → 判断路由权限
|
||||
const perms = ref<Array<string>>([]); // 用户权限编码集合 → 判断按钮权限
|
||||
|
||||
/**
|
||||
* 登录调用
|
||||
* 登录
|
||||
*
|
||||
* @param {LoginData}
|
||||
* @returns
|
||||
@@ -45,16 +44,14 @@ export const useUserStore = defineStore("user", () => {
|
||||
getUserInfo()
|
||||
.then(({ data }) => {
|
||||
if (!data) {
|
||||
return reject("Verification failed, please Login again.");
|
||||
reject("Verification failed, please Login again.");
|
||||
return;
|
||||
}
|
||||
if (!data.roles || data.roles.length <= 0) {
|
||||
reject("getUserInfo: roles must be a non-null array!");
|
||||
return;
|
||||
}
|
||||
userId.value = data.userId;
|
||||
nickname.value = data.nickname;
|
||||
avatar.value = data.avatar;
|
||||
roles.value = data.roles;
|
||||
perms.value = data.perms;
|
||||
Object.assign(user, { ...data });
|
||||
resolve(data);
|
||||
})
|
||||
.catch((error) => {
|
||||
@@ -68,8 +65,7 @@ export const useUserStore = defineStore("user", () => {
|
||||
return new Promise<void>((resolve, reject) => {
|
||||
logoutApi()
|
||||
.then(() => {
|
||||
resetRouter();
|
||||
resetToken();
|
||||
resetStore();
|
||||
location.reload(); // 清空路由
|
||||
resolve();
|
||||
})
|
||||
@@ -79,28 +75,19 @@ export const useUserStore = defineStore("user", () => {
|
||||
});
|
||||
}
|
||||
|
||||
// 重置
|
||||
function resetToken() {
|
||||
/** 清空缓存 */
|
||||
function resetStore() {
|
||||
resetRouter();
|
||||
token.value = "";
|
||||
nickname.value = "";
|
||||
avatar.value = "";
|
||||
roles.value = [];
|
||||
perms.value = [];
|
||||
Object.assign(user, { roles: [], perms: [] });
|
||||
}
|
||||
return {
|
||||
token,
|
||||
nickname,
|
||||
avatar,
|
||||
roles,
|
||||
perms,
|
||||
user,
|
||||
login,
|
||||
getInfo,
|
||||
logout,
|
||||
resetToken,
|
||||
/**
|
||||
* 当前登录用户ID
|
||||
*/
|
||||
userId,
|
||||
resetStore,
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user