From 6487f932a8b309bd227421254f087e9e46acec3a Mon Sep 17 00:00:00 2001 From: Hubert Van De Walle Date: Mon, 13 Apr 2020 00:19:52 +0200 Subject: [PATCH] Add route requiresAuth + redirect --- web/src/router/index.js | 17 ++++++++++++++++- web/src/store/index.js | 9 +++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/web/src/router/index.js b/web/src/router/index.js index 3b5bc89..efd1a2b 100644 --- a/web/src/router/index.js +++ b/web/src/router/index.js @@ -8,6 +8,8 @@ import NoteCreation from '../views/NoteCreation.vue' Vue.use(VueRouter) +import store from '../store'; + const routes = [ { path: '/', @@ -27,7 +29,10 @@ const routes = [ { path: '/note/new', name: 'NoteCreation', - component: NoteCreation + component: NoteCreation, + meta: { + requiresAuth: true, + } } ] @@ -37,4 +42,14 @@ const router = new VueRouter({ routes }) +router.beforeEach((to, from, next) => { + // If user is not signed in -> redirect to /signin + if (to.matched.some(record => record.meta.requiresAuth) && !store.getters.isLoggedIn) { + next({ + path: '/signin', + params: {nextUrl: to.fullPath} + }) + } else + next() +}) export default router diff --git a/web/src/store/index.js b/web/src/store/index.js index 3140477..1d173c3 100644 --- a/web/src/store/index.js +++ b/web/src/store/index.js @@ -14,9 +14,14 @@ export default new Vuex.Store({ setToken(token) }, clearToken(state) { - state.token = '' + state.token = null clearToken() } }, - actions: {} + actions: {}, + getters: { + isLoggedIn(state) { + return state.token !== null; + } + } })