test/src/permission.js
2025-03-30 22:09:19 +08:00

64 lines
1.6 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import router from "./router";
import store from "./store";
import { setItem, getItem, removeAllItem } from "@/utils/storage";
// 白名单
const whiteList = [
"/login",
"/oatuh_login",
"/profile",
"/",
"/editPassword",
"/404",
"/401"
];
/**
* 路由前置守卫
* to 去哪里
* from 来自哪
* next 往下走
*/
router.beforeEach(async (to, from, next) => {
// 存在 token ,进入主页
// if (store.state.user.token) {
// 快捷访问
if (store.getters.token) {
// 判断用户资料是否获取
// 若不存在用户信息,则需要获取用户信息
// 触发获取用户信息的 action并获取用户当前权限
await store.commit("permission/setRouteReady", 1);
// 添加完动态路由之后,需要在进行一次主动跳转
const afterMenuList = await getItem("menusPermission");
// afterMenuList.push('allocationUser');
// 处理用户权限,筛选出需要添加的权限
if (store.state.permission.routes == 0) {
const filterRoutes = await store.dispatch(
"permission/filterRoutes",
afterMenuList
);
filterRoutes.forEach((item) => {
router.addRoute(item);
});
next({
...to,
replace: true
});
} else {
next();
}
// 利用 addRoute 循环添加
} else {
const isOatuh = getItem("isOatuh");
// 没有token的情况下可以进入白名单
if (whiteList.indexOf(to.path) > -1) {
next();
} else {
if (isOatuh) {
next("/oatuh_login");
} else {
next("/login");
}
}
}
});