120 lines
3.4 KiB
TypeScript
120 lines
3.4 KiB
TypeScript
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;
|