|
- import { createWebHistory, createRouter } from "vue-router";
- import routes from "./routes";
- import appConfig from "../../app.config";
- import store from "../state/store";
-
- const router = createRouter({
- history: createWebHistory("/"),
- routes,
- });
-
- router.beforeResolve(async (routeTo, routeFrom, next) => {
- try {
- if (routeTo.matched.some((record) => record.meta.requiresAuth)) {
- await store.dispatch("user/verifyLogin");
-
- if (!store.getters["user/isAuthenticated"]) {
- return next({ name: "otpLogin" });
- }
- }
-
- // For each matched route...
- for (const route of routeTo.matched) {
- await new Promise((resolve, reject) => {
- // If a `beforeResolve` hook is defined, call it with
- // the same arguments as the `beforeEnter` hook.
- if (route.meta && route.meta.beforeResolve) {
- route.meta.beforeResolve(routeTo, routeFrom, (...args) => {
- // If the user chose to redirect...
- if (args.length) {
- // If redirecting to the same route we're coming from...
- // Complete the redirect.
- next(...args);
- reject(new Error("Redirected"));
- } else {
- resolve();
- }
- });
- } else {
- // Otherwise, continue resolving the route.
- resolve();
- }
- });
- }
- // If a `beforeResolve` hook chose to redirect, just return.
- } catch (error) {
- return;
- }
- document.title = routeTo.meta.title + " | " + appConfig.title;
- // If we reach this point, continue resolving the route.
- next();
- });
-
- export default router;
|