123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import router from "./router";
- import { ElMessage } from "element-plus";
- import NProgress from "nprogress";
- import "nprogress/nprogress.css";
- import { getToken } from "/src/utils/auth";
- import { isHttp } from "/src/utils/validate";
- import { isRelogin } from "/src/utils/request";
- import useUserStore from "/src/store/modules/user";
- import useSettingsStore from "/src/store/modules/settings";
- import usePermissionStore from "/src/store/modules/permission";
- import axios from "axios";
- NProgress.configure({ showSpinner: false });
- const whiteList = ["/login", "/register"];
- const checkVersion = async () => {
- const url = `/version.json?t=${Date.now()}`;
- let res = null;
- try {
- res = await axios.get(url);
- } catch (err) {
- console.error("checkVersion error: ", err);
- }
- let version = null;
- if (res) {
- version = res.data.version;
- }
- const localVersion = localStorage.getItem("sd_web_version");
- if (version && localVersion && JSON.parse(localVersion).version && JSON.parse(localVersion).version !== version) {
- localStorage.setItem("sd_web_version", JSON.stringify({ version: version }));
- window.location.reload();
- } else {
- localStorage.setItem("sd_web_version", JSON.stringify({ version: version }));
- }
- };
- const isRefresh = import.meta.env.VITE_REFRESH;
- router.beforeEach((to, from, next) => {
-
- if (from.path !== "/" && isRefresh === "true") {
- checkVersion();
- }
- NProgress.start();
- if (getToken()) {
- to.meta.title && useSettingsStore().setTitle(to.meta.title);
-
- if (to.path === "/login") {
- next({ path: "/" });
- NProgress.done();
- } else {
- if (useUserStore().roles.length === 0) {
- isRelogin.show = true;
-
- useUserStore()
- .getInfo()
- .then(() => {
- isRelogin.show = false;
- usePermissionStore()
- .generateRoutes()
- .then((accessRoutes) => {
-
- accessRoutes.forEach((route) => {
- if (!isHttp(route.path)) {
- router.addRoute(route);
- }
- });
- next({ ...to, replace: true });
- });
- })
- .catch((err) => {
- useUserStore()
- .logOut()
- .then(() => {
- ElMessage.error(err);
- next({ path: "/" });
- });
- });
- } else {
- next();
- }
- }
- } else {
-
- if (whiteList.indexOf(to.path) !== -1) {
-
- next();
- } else {
- next(`/login?redirect=${to.fullPath}`);
- NProgress.done();
- }
- }
- });
- router.afterEach(() => {
- NProgress.done();
- });
|