refactor: ♻️ userStore 代码重构优化

Former-commit-id: ef31b8420a48a91dd2449d62fb615941d528bf24
This commit is contained in:
郝先瑞
2023-09-11 18:20:03 +08:00
parent 7fcf66c8d0
commit 18daf33f9d
8 changed files with 32 additions and 44 deletions

View File

@@ -1,4 +1,4 @@
import { RouteRecordRaw, useRouter } from "vue-router";
import { RouteRecordRaw } from "vue-router";
import { defineStore } from "pinia";
import { constantRoutes } from "@/router";
import { store } from "@/store";

View File

@@ -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,
};
});