| | |
| | | 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; |
| | | |
| | |
| | | return; |
| | | } |
| | | |
| | | const token = getToken(); |
| | | const token = userStore.getTokenState; |
| | | |
| | | // token does not exist |
| | | if (!token) { |
| | |
| | | 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, |
| | | }; |
| | |
| | | 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; |
| | |
| | | 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(); |
| | | } |
| | | }); |
| | | } |