summaryrefslogblamecommitdiffstats
path: root/webapp/src/router.js
blob: 7c530a9d3d94a65be336fbe59e10ed8efc1cab7d (plain) (tree)
1
2
3
4
5
6
7
8
9
10



                                                      
                                                 
 



                                  

               
                                       

                                                    
                                                                             
     
                                                                                        
                                      
    
               

 
                         
                  


                     
                    



                          
                        
                               
                                                                            







                            













                                                           
 
                                       
import Vue from 'vue'
import Router from 'vue-router'
import LoginPage from '@/components/LoginPage'
import DashboardPage from '@/components/DashboardPage'
import dashboardModules from '@/config/dashboard'

dashboardModules.forEach(item => {
  item.name = item.component.name
})

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 if (parent) 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()))
    },
    {
      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 }