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