import router from "./router";
|
import NProgress from "nprogress";
|
import 'nprogress/nprogress.css';
|
import i18n from "/@/lang";
|
import { Session, Local } from "/@/utils/storage";
|
|
|
|
NProgress.configure({ showSpinner: false });
|
|
|
|
const getPageTitle = (key: string) => {
|
const hasKey = i18n.global.te(`router.${key}`);
|
if (hasKey) {
|
const pageName = i18n.global.t(`router.${key}`);
|
return `${pageName} - ${i18n.global.t("title")}`;
|
}
|
|
return i18n.global.t("title");
|
};
|
|
|
const whiteList: string[] = ['/login'];
|
|
|
router.beforeEach((to: any, from: any, next: any) => {
|
NProgress.start();
|
|
const isFinallyToken = Local.get("isFinallyToken");
|
|
// 如果当前token不是最终我们需要的,清除全部缓存,之后用户操作我们不理
|
if(!isFinallyToken) {
|
Session.clear();
|
}
|
|
if (Session.get("token")) {
|
if (to.path === "/login") {
|
next({ path: '/' })
|
NProgress.done();
|
} else {
|
// eslint-disable-next-line no-console
|
next();
|
}
|
|
} else {
|
if (whiteList.indexOf(to.path) !== -1) {
|
next()
|
} else {
|
next(`/login?redirect=${to.path}`)
|
NProgress.done()
|
}
|
}
|
});
|
|
|
router.afterEach((to: any) => {
|
NProgress.done()
|
document.title = getPageTitle(to.meta.key);
|
});
|