This repository has been archived on 2021-03-10. You can view files and clone it, but cannot push or open issues or pull requests.
perktree/frontend/src/router.js

97 lines
1.8 KiB
JavaScript

/*
* router.js
* Copyright (C) 2019 pavle <pavle.portic@tilda.center>
*
* Distributed under terms of the BSD-3-Clause license.
*/
import Vue from 'vue';
import Router from 'vue-router';
import Index from './components/index.component';
import Login from './components/auth/login.component';
import Signup from './components/auth/signup.component';
import AuthController from './controllers/auth.controller';
Vue.use(Router);
const router = new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'index',
component: Index,
meta: {
guest: true,
},
},
{
path: '/login',
name: 'login',
component: Login,
meta: {
guest: true,
},
},
{
path: '/signup',
name: 'signpu',
component: Signup,
meta: {
guest: true,
},
},
{
path: '/logout',
name: 'logout',
},
{
path: '/upload',
name: 'upload-perks',
component: () => import(/* webpackChunkName: "perks" */ './components/upload-perks.component'),
},
{
path: '/trees',
name: 'trees',
component: () => import(/* webpackChunkName: "perks" */ './components/trees.component'),
meta: {
guest: true,
},
},
{
path: '/perks/:tree',
name: 'perks',
component: () => import(/* webpackChunkName: "perks" */ './components/perks.component'),
meta: {
guest: true,
},
},
{
path: '/user',
name: 'user',
component: () => import(/* webpackChunkName: "user" */ './components/user.component'),
},
],
});
router.isCurrentRoute = (routeName) => {
return router.currentRoute.name === routeName;
};
router.beforeEach((to, from, next) => {
if (to.name === 'logout') {
AuthController.logout();
return next({ name: 'index' });
}
if (!to.meta.guest && !AuthController.getAuthStatus()) {
return next({ name: 'login' });
}
return next();
});
export default router;