| | |
| | | import type { Router, RouteRecordRaw } from 'vue-router'; |
| | | |
| | | import { permissionStore } from '/@/store/modules/permission'; |
| | | import { usePermissionStoreWidthOut } from '/@/store/modules/permission'; |
| | | |
| | | import { PageEnum } from '/@/enums/pageEnum'; |
| | | import { userStore } from '/@/store/modules/user'; |
| | | import { useUserStoreWidthOut } from '/@/store/modules/user'; |
| | | |
| | | import { PAGE_NOT_FOUND_ROUTE } from '/@/router/routes/basic'; |
| | | |
| | |
| | | const whitePathList: PageEnum[] = [LOGIN_PATH]; |
| | | |
| | | export function createPermissionGuard(router: Router) { |
| | | const userStore = useUserStoreWidthOut(); |
| | | const permissionStore = usePermissionStoreWidthOut(); |
| | | router.beforeEach(async (to, from, next) => { |
| | | // Jump to the 404 page after processing the login |
| | | if (from.path === LOGIN_PATH && to.name === PAGE_NOT_FOUND_ROUTE.name) { |
| | |
| | | return; |
| | | } |
| | | |
| | | const token = userStore.getTokenState; |
| | | const token = userStore.getToken; |
| | | |
| | | // token does not exist |
| | | if (!token) { |
| | |
| | | next(redirectData); |
| | | return; |
| | | } |
| | | if (permissionStore.getIsDynamicAddedRouteState) { |
| | | if (permissionStore.getIsDynamicAddedRoute) { |
| | | next(); |
| | | return; |
| | | } |
| | |
| | | const redirectPath = (from.query.redirect || to.path) as string; |
| | | const redirect = decodeURIComponent(redirectPath); |
| | | const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect }; |
| | | permissionStore.commitDynamicAddedRouteState(true); |
| | | permissionStore.setDynamicAddedRoute(true); |
| | | next(nextData); |
| | | }); |
| | | } |