diff --git a/src/router/index.js b/src/router/index.js index 44952f13e32ea6a00b992f9b4465bc80a84569b0..d92b0993c2def22310e69ab1ccb0425911fe708e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -4,33 +4,53 @@ import HomeView from "../views/HomeView.vue"; import LoginView from "../views/LoginView.vue"; import NewPasswordView from "../views/NewPasswordView"; +/** + * Guards routes. If token is null, no user is logged in and only the + * login page and the register page will be accessible. + * + * Legg denne metoden i login component for å nullstille token, har ikke logg ut metode ennå + * så må nullstilles på denne måten. + * beforeMount() { + console.log("Token: " + this.$store.state.user.token); + this.$store.commit("logout"); + console.log("Token etter: " + this.$store.state.user.token); + } + * + */ +function guardRoute(to, from, next) { + var isAuthenticated = false; + if (store.state.user.token != null) isAuthenticated = true; + else isAuthenticated = false; + if (isAuthenticated) { + next(); // allow to enter route + } else { + next("/login"); // go to '/login'; + } +} + const routes = [ { path: "/", //Endre før push name: "home", + beforeEnter: guardRoute, component: HomeView, }, { path: "/about", name: "about", + beforeEnter: guardRoute, component: () => import("../views/AboutView.vue"), }, { path: "/profile/:id", name: "profile", component: () => import("../views/ProfileView.vue"), - beforeEnter: () => { - if (store.state.user.token == null) router.push("login"); - }, + beforeEnter: guardRoute, }, { path: "/register", name: "register", - // route level code-splitting - // this generates a separate chunk (register.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => - import(/* webpackChunkName: "register" */ "../views/RegisterView.vue"), + component: () => import("../views/RegisterView.vue"), }, { path: "/login", @@ -41,21 +61,25 @@ const routes = [ path: "/newPassword", name: "newPassword", component: NewPasswordView, + beforeEnter: guardRoute, }, { path: "/searchItemList", name: "searchItemList", component: () => import("../views/SearchItemListView.vue"), + beforeEnter: guardRoute, }, { path: "/createNewGroup", name: "createNewGroup", component: () => import("../views/CreateNewGroupView.vue"), + beforeEnter: guardRoute, }, { path: "/addNewItem", name: "addNewItem", component: () => import("../views/AddNewItemView.vue"), + beforeEnter: guardRoute, }, ];