blob: 9a30e9764ee02c49d480d1e7da529409ec674b26 [file] [log] [blame]
Derick Montaguefded0d12019-12-11 06:16:40 -06001import Vue from 'vue';
2import VueRouter from 'vue-router';
3import store from '../store/index';
4import AppLayout from '../layouts/AppLayout.vue';
Derick Montaguea2988f42020-01-17 13:46:30 -06005
6Vue.use(VueRouter);
7
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -06008// Meta title is translated using i18n in App.vue and PageTitle.Vue
9// Example meta: {title: 'pageTitle.overview'}
Derick Montaguea2988f42020-01-17 13:46:30 -060010const routes = [
11 {
Derick Montaguefded0d12019-12-11 06:16:40 -060012 path: '/',
13 name: '',
Derick Montaguee080a1a2019-12-04 16:30:08 -060014 meta: {
15 requiresAuth: true
16 },
17 component: AppLayout,
18 children: [
19 {
Derick Montaguefded0d12019-12-11 06:16:40 -060020 path: '',
21 component: () => import('@/views/Overview'),
Derick Montaguec8636e52019-12-06 01:28:38 -060022 meta: {
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060023 title: 'pageTitle.overview'
Derick Montaguec8636e52019-12-06 01:28:38 -060024 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060025 },
26 {
Derick Montaguefded0d12019-12-11 06:16:40 -060027 path: '/access-control/local-user-management',
28 name: 'local-users',
29 component: () => import('@/views/AccessControl/LocalUserManagement'),
Derick Montaguec8636e52019-12-06 01:28:38 -060030 meta: {
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060031 title: 'pageTitle.localUserMgmt'
Derick Montaguec8636e52019-12-06 01:28:38 -060032 }
Derick Montague126eaab2019-12-23 13:33:52 -060033 },
34 {
Yoshie Muranakac11d3892020-02-19 08:07:40 -080035 path: '/control/reboot-bmc',
36 name: 'reboot-bmc',
37 component: () => import('@/views/Control/RebootBmc'),
38 meta: {
39 title: 'pageTitle.rebootBmc'
40 }
41 },
42 {
Derick Montague126eaab2019-12-23 13:33:52 -060043 path: '/unauthorized',
44 name: 'unauthorized',
45 component: () => import('@/views/Unauthorized'),
46 meta: {
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060047 title: 'pageTitle.unauthorized'
Derick Montague126eaab2019-12-23 13:33:52 -060048 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060049 }
50 ]
Derick Montaguea2988f42020-01-17 13:46:30 -060051 },
52 {
Derick Montaguefded0d12019-12-11 06:16:40 -060053 path: '/login',
54 name: 'login',
55 component: () => import('@/views/Login'),
Derick Montaguec8636e52019-12-06 01:28:38 -060056 meta: {
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060057 title: 'pageTitle.login'
Derick Montaguec8636e52019-12-06 01:28:38 -060058 }
Derick Montaguea2988f42020-01-17 13:46:30 -060059 }
Derick Montaguea2988f42020-01-17 13:46:30 -060060];
61
62const router = new VueRouter({
Derick Montaguea2988f42020-01-17 13:46:30 -060063 base: process.env.BASE_URL,
64 routes,
Yoshie Muranaka71ac2302019-12-26 11:43:36 -080065 linkExactActiveClass: 'nav-link--current'
Derick Montaguea2988f42020-01-17 13:46:30 -060066});
67
Derick Montaguee080a1a2019-12-04 16:30:08 -060068router.beforeEach((to, from, next) => {
69 if (to.matched.some(record => record.meta.requiresAuth)) {
Derick Montaguefded0d12019-12-11 06:16:40 -060070 if (store.getters['authentication/isLoggedIn']) {
Derick Montaguee080a1a2019-12-04 16:30:08 -060071 next();
72 return;
73 }
Derick Montaguefded0d12019-12-11 06:16:40 -060074 next('/login');
Derick Montaguee080a1a2019-12-04 16:30:08 -060075 } else {
76 next();
77 }
78});
79
Derick Montaguea2988f42020-01-17 13:46:30 -060080export default router;