67 lines
1.6 KiB
JavaScript
67 lines
1.6 KiB
JavaScript
import {
|
|
createMemoryHistory,
|
|
createRouter,
|
|
createWebHashHistory,
|
|
createWebHistory,
|
|
} from 'vue-router'
|
|
import routes from './routes'
|
|
import useLoginStore from 'stores/login'
|
|
|
|
/*
|
|
* 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.
|
|
*/
|
|
|
|
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.VUE_ROUTER_BASE),
|
|
})
|
|
|
|
Router.beforeEach(
|
|
(to, from) => {
|
|
const loginStore = useLoginStore()
|
|
|
|
const isLoggedIn = loginStore.IsLoggedIn()
|
|
|
|
// instead of having to check every route record with
|
|
// to.matched.some(record => record.meta.requiresAuth)
|
|
|
|
if (to.meta.requiresAuth && !isLoggedIn &&
|
|
((to.path !== '/') || (to.path !== 'login'))) {
|
|
// this route requires auth, check if logged in
|
|
// if not, redirect to login page.
|
|
|
|
return {
|
|
path: '/login',
|
|
// save the location we were at to come back later
|
|
//query: { redirect: to.fullPath },
|
|
}
|
|
}
|
|
|
|
if ((isLoggedIn) && ((to.path === '/') || (to.path === 'login'))) {
|
|
return {
|
|
path: '/',
|
|
query: '',
|
|
}
|
|
}
|
|
},
|
|
)
|
|
|
|
export default Router
|
|
|