/home/ivoiecob/email.hirewise-va.com/modules/AdminPanelWebclient/vue/src/router/index.js
import { route } from 'quasar/wrappers'
import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory } from 'vue-router'
import routes from './routes'
import core from 'src/core'
import modulesManager from 'src/modules-manager'
import store from 'src/store'
import settings from 'src/settings'
// Vue.use(VueRouter)
/*
* If not building with SSR mode, you can
* directly export the Router instantiation;
*
* The function below can be async too; either use
* async/await or return a Promise which resolves
* with the Router instance.
*/
export default route(function (/* { store, ssrContext } */) {
// const Router = new VueRouter({
// scrollBehavior: () => ({ x: 0, y: 0 }),
// routes,
// // Leave these as they are and change in quasar.conf.js instead!
// // quasar.conf.js -> build -> vueRouterMode
// // quasar.conf.js -> build -> publicPath
// mode: process.env.VUE_ROUTER_MODE,
// base: process.env.VUE_ROUTER_BASE
// })
const createHistory = process.env.SERVER
? createMemoryHistory
: process.env.VUE_ROUTER_MODE === 'history'
? createWebHistory
: createWebHashHistory
const Router = createRouter({
scrollBehavior: () => ({ left: 0, top: 0 }),
routes,
// Leave this as is and make changes in quasar.conf.js instead!
// quasar.conf.js -> build -> vueRouterMode
// quasar.conf.js -> build -> publicPath
// history: createHistory(process.env.MODE === 'ssr' ? void 0 : process.env.VUE_ROUTER_BASE),
history: createHistory(process.env.MODE === 'ssr' ? undefined : process.env.VUE_ROUTER_BASE),
})
let routesAdded = false
let isAppLoadError = false
let isFirstLogin = true
Router.beforeEach(async (to, from, next) => {
if (isAppLoadError && to.path === '/app-not-loaded') {
next()
return
}
try {
await core.init()
if (!routesAdded) {
modulesManager.getRoutes().forEach((route) => {
const { name, path, component, children } = route
const routeData = { name, path, component }
if (children) {
routeData.children = children
}
Router.addRoute(name, routeData)
})
routesAdded = true
next(to.path)
return
}
// upon first login when we are logged in
if (isFirstLogin && store.getters['user/isUserSuperAdminOrTenantAdmin']) {
const { name, path, component, children } = modulesManager.getUserRoutes()
const routeData = { name, path, component }
if (children) {
routeData.children = children
}
// add user routes
Router.addRoute(name, routeData)
if (settings.getEnableMultiTenant()) {
const { name, path, component, children } = modulesManager.getTenantRoutes()
const routeData = { name, path, component }
if (children) {
routeData.children = children
}
// add tenant routes
Router.addRoute(name, routeData)
}
isFirstLogin = false
next(to.path)
return
}
const correctedPath = modulesManager.checkRouteExistsAndAllowed(to.matched, to.path)
if (to.path !== correctedPath) {
next(correctedPath)
return
}
next()
} catch (error) {
console.log('core.init reject', error)
isAppLoadError = true
next('/app-not-loaded')
}
})
return Router
})