import Vue from 'vue'; import Router from 'vue-router'; import Home from './views/Home.vue'; import NotFound from './views/NotFound.vue'; import NewSurvey from '@/components/Rooms.vue'; import Login from '@/components/Login.vue'; import Admin from '@/components/Admin.vue'; import Profile from '@/components/Profile.vue'; import User from '@/components/User.vue'; import Test from '@/components/Test.vue'; import Group from '@/components/Group.vue'; import Rooms from '@/components/Rooms.vue'; import Recorders from '@/components/Recorders.vue'; import Commands from '@/components/Commands.vue'; import store from '@/store'; Vue.use(Router); export const router = new Router({ // export default new Router({ mode: 'history', base: process.env.BASE_URL, routes: [ { path: '/', name: 'home', component: Home, }, { path: '/login', name: 'login', component: Login, }, { path: '/admin', name: 'admin', component: Admin, children: [ { name: 'admin.user', path: 'user', component: User, }, { name: 'admin.group', path: 'group', component: Group, }, ], }, { path: '/about', name: 'about', // route level code-splitting // this generates a separate chunk (about.[hash].js) for this route // which is lazy-loaded when the route is visited. component: () => import(/* webpackChunkName: "about" */ './views/About.vue'), }, { path: '/surveys/:id', name: 'Survey', component: Rooms, }, { path: '/rooms', name: 'rooms', component: Rooms, }, { path: '/recorders', name: 'recorders', component: Recorders, }, { path: '/test', name: 'test', component: Test, }, { path: '/commands', name: 'commands', component: Commands, }, { path: '/surveys', name: 'NewSurvey', component: NewSurvey, beforeEnter(to, from, next) { if (!store.getters.isAuthenticated) { next('/login'); } else { next(); } }, }, { path: '/profile', name: 'profile', component: Profile, beforeEnter(to, from, next) { if (!store.getters.isAuthenticated) { Vue.$log.debug('not authenticated!'); if (store.getters.isRefreshTokenValid) { Vue.$log.debug('refresh token is still valid :)'); store.dispatch('refreshToken') .then(() => next()) .catch(() => next('/login')); } else { next('/login'); } } else { next(); } }, }, { path: '*', name: 'notFound', component: NotFound, }, ], }); export default router;