mirror of
https://github.com/certd/certd.git
synced 2026-07-06 03:47:34 +08:00
46 lines
1.3 KiB
TypeScript
46 lines
1.3 KiB
TypeScript
import router from "/src/router";
|
|
import { useUserStore } from "/@/store/modules/user";
|
|
import { usePermissionStore } from "./store.permission";
|
|
import util from "./util.permission";
|
|
import { message } from "ant-design-vue";
|
|
import NProgress from "nprogress";
|
|
export function registerRouterHook() {
|
|
// 注册路由beforeEach钩子,在第一次加载路由页面时,加载权限
|
|
router.beforeEach(async (to, from, next) => {
|
|
const permissionStore = usePermissionStore();
|
|
if (permissionStore.isInited) {
|
|
if (to.meta.permission) {
|
|
//校验权限
|
|
// @ts-ignore
|
|
if (!util.hasPermissions(to.meta.permission)) {
|
|
//没有权限
|
|
message.warn("对不起,您没有权限");
|
|
//throw new Error("对不起,您没有权限");
|
|
NProgress.done();
|
|
return false;
|
|
}
|
|
}
|
|
next();
|
|
return;
|
|
}
|
|
|
|
const userStore = useUserStore();
|
|
const token = userStore.getToken;
|
|
if (!token || token === "undefined") {
|
|
next();
|
|
return;
|
|
}
|
|
|
|
// 初始化权限列表
|
|
try {
|
|
console.log("permission is enabled");
|
|
await permissionStore.loadFromRemote();
|
|
console.log("PM load success");
|
|
next({ ...to, replace: true });
|
|
} catch (e) {
|
|
console.error("加载动态路由失败", e);
|
|
next();
|
|
}
|
|
});
|
|
}
|