vben
2021-02-22 be3a3ed699f73d352d49623ef07288093a3332c4
src/router/guard/permissionGuard.ts
@@ -1,13 +1,11 @@
import type { Router, RouteRecordRaw } from 'vue-router';
import { appStore } from '/@/store/modules/app';
import { permissionStore } from '/@/store/modules/permission';
import { PageEnum } from '/@/enums/pageEnum';
import { getToken } from '/@/utils/auth';
import { userStore } from '/@/store/modules/user';
import { PAGE_NOT_FOUND_ROUTE } from '/@/router/constant';
// import { RootRoute } from '../routes/index';
const LOGIN_PATH = PageEnum.BASE_LOGIN;
@@ -27,7 +25,7 @@
      return;
    }
    const token = getToken();
    const token = userStore.getTokenState;
    // token does not exist
    if (!token) {
@@ -40,7 +38,7 @@
        return;
      }
      // redirect login page
      const redirectData: { path: string; replace: boolean; query?: { [key: string]: string } } = {
      const redirectData: { path: string; replace: boolean; query?: Indexable<string> } = {
        path: LOGIN_PATH,
        replace: true,
      };
@@ -58,9 +56,9 @@
      return;
    }
    const routes = await permissionStore.buildRoutesAction();
    routes.forEach((route) => {
      // router.addRoute(RootRoute.name!, route as RouteRecordRaw);
      router.addRoute(route as RouteRecordRaw);
      router.addRoute((route as unknown) as RouteRecordRaw);
    });
    const redirectPath = (from.query.redirect || to.path) as string;
@@ -68,12 +66,5 @@
    const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect };
    permissionStore.commitDynamicAddedRouteState(true);
    next(nextData);
  });
  router.afterEach((to) => {
    // Just enter the login page and clear the authentication information
    if (to.path === LOGIN_PATH) {
      appStore.resumeAllState();
    }
  });
}