import Vue from 'vue' import Router from 'vue-router' import LoginPage from '@/components/LoginPage' import DashboardPage from '@/components/DashboardPage' import dashboardModules from '@/config/dashboard' Vue.use(Router) function setChildren (routes, parent) { routes.forEach(route => { if (route.component && route.component.routes) { route.children = setChildren(route.component.routes(), route.component) } if (route.name && parent && parent.name) route.name = parent.name + '.' + route.name else delete route.name }) return routes } var router = new Router({ mode: 'history', routes: [ { path: '/login', name: 'login', component: LoginPage }, { path: '/dashboard', name: 'dashboard', component: DashboardPage, children: setChildren(dashboardModules.concat(DashboardPage.routes()), DashboardPage) }, { path: '*', redirect: '/dashboard' } ] }) const registerRouterGuards = function (store) { router.beforeEach((to, from, next) => { const loggedIn = document.cookie.indexOf('jwt_hp') >= 0 if (to.name === 'login') { if (loggedIn) next({ name: 'dashboard' }) else next() } else if (!loggedIn) { store.commit('setLoginRedirect', to.fullPath) next({ name: 'login' }) } else { next() } }) } export { router, registerRouterGuards }