Mercurial > gemma
view client/src/router.js @ 1544:5f80ec319a4f
If a user is removed or renamed kill her/his schedule. Needs more case on renaming.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 10 Dec 2018 13:17:50 +0100 |
parents | f4b3fb43b311 |
children | 0ded4c56978e |
line wrap: on
line source
/* This is Free Software under GNU Affero General Public License v >= 3.0 * without warranty, see README.md and license for details. * * SPDX-License-Identifier: AGPL-3.0-or-later * License-Filename: LICENSES/AGPL-3.0.txt * * Copyright (C) 2018 by via donau * – Österreichische Wasserstraßen-Gesellschaft mbH * Software engineering by Intevation GmbH * * Author(s): * Thomas Junk <thomas.junk@intevation.de> * Bernhard Reiter <bernhard@intevation.de> * Markus Kottländer <markus@intevation.de> */ import Vue from "vue"; import Router from "vue-router"; import store from "./store"; import { sessionStillActive, toMillisFromString } from "./lib/session"; /* facilitate codesplitting */ const Login = () => import("./components/Login.vue"); const Main = () => import("./components/map/Main.vue"); const Usermanagement = () => import("./components/admin/usermanagement/Usermanagement.vue"); const Logs = () => import("./components/admin/Logs.vue"); const Importqueue = () => import("./components/admin/Importqueue.vue"); const Importschedule = () => import("./components/admin/importschedule/Importschedule.vue"); const Systemconfiguration = () => import("./components/admin/Systemconfiguration.vue"); Vue.use(Router); const router = new Router({ routes: [ { path: "/login", name: "login", component: Login }, { path: "/usermanagement", name: "usermanagement", component: Usermanagement, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const isSysadmin = store.getters["user/isSysAdmin"]; if (!isSysadmin) { next("/"); } else { next(); } } }, { path: "/logs", name: "logs", component: Logs, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const isSysadmin = store.getters["user/isSysAdmin"]; if (!isSysadmin) { next("/"); } else { next(); } } }, { path: "/systemconfiguration", name: "systemconfiguration", component: Systemconfiguration, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const isSysadmin = store.getters["user/isSysAdmin"]; if (!isSysadmin) { next("/"); } else { next(); } } }, { path: "/importqueue", name: "importqueue", component: Importqueue, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const isWaterwayAdmin = store.getters["user/isWaterwayAdmin"]; if (!isWaterwayAdmin) { next("/"); } else { next(); } } }, { path: "/importschedule", name: "importschedule", component: Importschedule, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const isWaterwayAdmin = store.getters["user/isWaterwayAdmin"]; if (!isWaterwayAdmin) { next("/"); } else { next(); } } }, { path: "/", name: "mainview", component: Main, meta: { requiresAuth: true }, beforeEnter: (to, from, next) => { const expiresFromPastSession = toMillisFromString( localStorage.getItem("expires") ); if (sessionStillActive(expiresFromPastSession)) { store.commit("user/setUser", localStorage.getItem("user")); store.commit("user/setExpires", expiresFromPastSession); store.commit("user/setRoles", localStorage.getItem("roles")); store.commit("user/setIsAuthenticate", true); } else { store.commit("reset"); store.commit("user/clearAuth"); } next(); } }, { path: "*", component: Login } ] }); router.beforeEach((to, from, next) => { const requiresAuth = to.matched.some(record => record.meta.requiresAuth); const loggedIn = store.state.user.isAuthenticated; const expiresFromPastSession = toMillisFromString( localStorage.getItem("expires") ); const authRequired = requiresAuth && !(loggedIn || sessionStillActive(expiresFromPastSession)); if (authRequired) { next("/login"); } else if (!authRequired) { next(); } else { next(); } }); export default router;