blob: 9c802340317402451d1684e76eb230a403011785 [file] [log] [blame]
Derick Montaguea2988f42020-01-17 13:46:30 -06001import Vue from "vue";
2import VueRouter from "vue-router";
Derick Montaguee080a1a2019-12-04 16:30:08 -06003import store from "../store/index";
4import AppLayout from "../layouts/AppLayout.vue";
Derick Montaguea2988f42020-01-17 13:46:30 -06005
6Vue.use(VueRouter);
7
8const routes = [
9 {
10 path: "/",
Derick Montaguee080a1a2019-12-04 16:30:08 -060011 name: "",
12 meta: {
13 requiresAuth: true
14 },
15 component: AppLayout,
16 children: [
17 {
18 path: "",
Derick Montaguec8636e52019-12-06 01:28:38 -060019 component: () => import("@/views/Overview"),
20 meta: {
21 title: "Server Overview"
22 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060023 },
24 {
25 path: "/access-control/local-user-management",
26 name: "local-users",
Derick Montaguec8636e52019-12-06 01:28:38 -060027 component: () => import("@/views/AccessControl/LocalUserManagement"),
28 meta: {
29 title: "Manage Local Users"
30 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060031 }
32 ]
Derick Montaguea2988f42020-01-17 13:46:30 -060033 },
34 {
Derick Montaguee080a1a2019-12-04 16:30:08 -060035 path: "/login",
36 name: "login",
Derick Montaguec8636e52019-12-06 01:28:38 -060037 component: () => import("@/views/Login"),
38 meta: {
39 title: "Login"
40 }
Derick Montaguea2988f42020-01-17 13:46:30 -060041 }
Derick Montaguea2988f42020-01-17 13:46:30 -060042];
43
44const router = new VueRouter({
Derick Montaguea2988f42020-01-17 13:46:30 -060045 base: process.env.BASE_URL,
46 routes,
47 linkExactActiveClass: "nav__link--current"
48});
49
Derick Montaguee080a1a2019-12-04 16:30:08 -060050router.beforeEach((to, from, next) => {
51 if (to.matched.some(record => record.meta.requiresAuth)) {
52 if (store.getters["authentication/isLoggedIn"]) {
53 next();
54 return;
55 }
56 next("/login");
57 } else {
58 next();
59 }
60});
61
Derick Montaguea2988f42020-01-17 13:46:30 -060062export default router;