Changeset View
Changeset View
Standalone View
Standalone View
src/resources/vue/js/routes.js
import Vue from 'vue' | import Vue from 'vue' | ||||
import VueRouter from 'vue-router' | import VueRouter from 'vue-router' | ||||
Vue.use(VueRouter) | Vue.use(VueRouter) | ||||
import DashboardComponent from '../components/Dashboard' | import DashboardComponent from '../components/Dashboard' | ||||
import DomainComponent from '../components/Domain' | |||||
import Error404Component from '../components/404' | import Error404Component from '../components/404' | ||||
import LoginComponent from '../components/Login' | import LoginComponent from '../components/Login' | ||||
import LogoutComponent from '../components/Logout' | import LogoutComponent from '../components/Logout' | ||||
import PasswordResetComponent from '../components/PasswordReset' | import PasswordResetComponent from '../components/PasswordReset' | ||||
import SignupComponent from '../components/Signup' | import SignupComponent from '../components/Signup' | ||||
import store from './store' | import store from './store' | ||||
const routes = [ | const routes = [ | ||||
{ | { | ||||
path: '/', | path: '/', | ||||
redirect: { name: 'login' } | redirect: { name: 'login' } | ||||
}, | }, | ||||
{ | { | ||||
path: '/dashboard', | path: '/dashboard', | ||||
name: 'dashboard', | name: 'dashboard', | ||||
component: DashboardComponent, | component: DashboardComponent, | ||||
meta: { requiresAuth: true } | meta: { requiresAuth: true } | ||||
}, | }, | ||||
{ | { | ||||
path: '/domain/:domain', | |||||
name: 'domain', | |||||
component: DomainComponent, | |||||
meta: { requiresAuth: true } | |||||
}, | |||||
{ | |||||
path: '/login', | path: '/login', | ||||
name: 'login', | name: 'login', | ||||
component: LoginComponent | component: LoginComponent | ||||
}, | }, | ||||
{ | { | ||||
path: '/logout', | path: '/logout', | ||||
name: 'logout', | name: 'logout', | ||||
component: LogoutComponent | component: LogoutComponent | ||||
Show All 16 Lines | |||||
] | ] | ||||
const router = new VueRouter({ | const router = new VueRouter({ | ||||
mode: 'history', | mode: 'history', | ||||
routes | routes | ||||
}) | }) | ||||
router.beforeEach((to, from, next) => { | router.beforeEach((to, from, next) => { | ||||
// check if the route requires authentication and user is not logged in | // check if the route requires authentication and user is not logged in | ||||
if (to.matched.some(route => route.meta.requiresAuth) && !store.state.isLoggedIn) { | if (to.matched.some(route => route.meta.requiresAuth) && !store.state.isLoggedIn) { | ||||
// remember the original request, to use after login | |||||
store.state.afterLogin = to; | |||||
// redirect to login page | // redirect to login page | ||||
next({ name: 'login' }) | next({ name: 'login' }) | ||||
return | |||||
} | |||||
// if logged in redirect to dashboard | |||||
if (to.path === '/login' && store.state.isLoggedIn) { | |||||
next({ name: 'dashboard' }) | |||||
return | return | ||||
} | } | ||||
next() | next() | ||||
}) | }) | ||||
export default router | export default router |