blob: 73f31861b45436515958f55f3952fd7f69947785 [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';
Yoshie Muranaka6173bc62020-06-16 12:39:07 -07005import LoginLayout from '@/layouts/LoginLayout';
Derick Montaguea2988f42020-01-17 13:46:30 -06006
7Vue.use(VueRouter);
8
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -06009// Meta title is translated using i18n in App.vue and PageTitle.Vue
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080010// Example meta: {title: 'appPageTitle.overview'}
Derick Montaguea2988f42020-01-17 13:46:30 -060011const routes = [
12 {
Derick Montaguefded0d12019-12-11 06:16:40 -060013 path: '/',
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: '',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -070021 name: 'overview',
Derick Montaguefded0d12019-12-11 06:16:40 -060022 component: () => import('@/views/Overview'),
Derick Montaguec8636e52019-12-06 01:28:38 -060023 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080024 title: 'appPageTitle.overview'
Derick Montaguec8636e52019-12-06 01:28:38 -060025 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060026 },
27 {
Sukanya Pandeyb1f559f2020-04-28 20:18:28 +053028 path: '/profile-settings',
29 name: 'profile-settings',
30 component: () => import('@/views/ProfileSettings'),
31 meta: {
32 title: 'appPageTitle.profileSettings'
33 }
34 },
35 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -070036 path: '/health/event-logs',
37 name: 'event-logs',
38 component: () => import('@/views/Health/EventLogs'),
39 meta: {
40 title: 'appPageTitle.eventLogs'
41 }
42 },
43 {
Yoshie Muranaka56ee7692020-05-28 13:28:29 -070044 path: '/health/hardware-status',
45 name: 'hardware-status',
46 component: () => import('@/views/Health/HardwareStatus'),
47 meta: {
48 title: 'appPageTitle.hardwareStatus'
49 }
50 },
51 {
Yoshie Muranaka30abccb2020-03-11 12:44:24 -070052 path: '/health/sensors',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -070053 name: 'sensors',
Yoshie Muranaka30abccb2020-03-11 12:44:24 -070054 component: () => import('@/views/Health/Sensors'),
55 meta: {
56 title: 'appPageTitle.sensors'
57 }
58 },
59 {
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -070060 path: '/access-control/ldap',
61 name: 'ldap',
62 component: () => import('@/views/AccessControl/Ldap'),
63 meta: {
64 title: 'appPageTitle.ldap'
65 }
66 },
67 {
Derick Montaguefded0d12019-12-11 06:16:40 -060068 path: '/access-control/local-user-management',
69 name: 'local-users',
70 component: () => import('@/views/AccessControl/LocalUserManagement'),
Derick Montaguec8636e52019-12-06 01:28:38 -060071 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080072 title: 'appPageTitle.localUserManagement'
Derick Montaguec8636e52019-12-06 01:28:38 -060073 }
Derick Montague126eaab2019-12-23 13:33:52 -060074 },
75 {
Yoshie Muranaka37393812020-03-24 15:25:24 -070076 path: '/access-control/ssl-certificates',
77 name: 'ssl-certificates',
78 component: () => import('@/views/AccessControl/SslCertificates'),
79 meta: {
80 title: 'appPageTitle.sslCertificates'
81 }
82 },
83 {
Sukanya Pandey9055d982020-03-31 17:37:53 +053084 path: '/control/manage-power-usage',
85 name: 'manage-power-usage',
86 component: () => import('@/views/Control/ManagePowerUsage'),
87 meta: {
88 title: 'appPageTitle.managePowerUsage'
89 }
90 },
91 {
Dixsie Wolmersbb81d552020-02-26 19:52:28 -060092 path: '/configuration/network-settings',
93 name: 'network-settings',
94 component: () => import('@/views/Configuration/NetworkSettings'),
95 meta: {
96 title: 'appPageTitle.networkSettings'
97 }
98 },
99 {
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800100 path: '/control/reboot-bmc',
101 name: 'reboot-bmc',
102 component: () => import('@/views/Control/RebootBmc'),
103 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800104 title: 'appPageTitle.rebootBmc'
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800105 }
106 },
107 {
SurenNeware090c2d42020-04-01 14:07:27 +0530108 path: '/control/server-led',
109 name: 'server-led',
110 component: () => import('@/views/Control/ServerLed'),
111 meta: {
112 title: 'appPageTitle.serverLed'
113 }
114 },
115 {
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800116 path: '/control/server-power-operations',
117 name: 'server-power-operations',
118 component: () => import('@/views/Control/ServerPowerOperations'),
119 meta: {
120 title: 'appPageTitle.serverPowerOperations'
121 }
122 },
123 {
Derick Montague126eaab2019-12-23 13:33:52 -0600124 path: '/unauthorized',
125 name: 'unauthorized',
126 component: () => import('@/views/Unauthorized'),
127 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800128 title: 'appPageTitle.unauthorized'
Derick Montague126eaab2019-12-23 13:33:52 -0600129 }
Derick Montaguee080a1a2019-12-04 16:30:08 -0600130 }
131 ]
Derick Montaguea2988f42020-01-17 13:46:30 -0600132 },
133 {
Derick Montaguefded0d12019-12-11 06:16:40 -0600134 path: '/login',
Yoshie Muranaka6173bc62020-06-16 12:39:07 -0700135 component: LoginLayout,
136 children: [
137 {
138 path: '',
139 name: 'login',
140 component: () => import('@/views/Login'),
141 meta: {
142 title: 'appPageTitle.login'
143 }
144 }
145 ]
Derick Montaguea2988f42020-01-17 13:46:30 -0600146 }
Derick Montaguea2988f42020-01-17 13:46:30 -0600147];
148
149const router = new VueRouter({
Derick Montaguea2988f42020-01-17 13:46:30 -0600150 base: process.env.BASE_URL,
151 routes,
Yoshie Muranaka71ac2302019-12-26 11:43:36 -0800152 linkExactActiveClass: 'nav-link--current'
Derick Montaguea2988f42020-01-17 13:46:30 -0600153});
154
Derick Montaguee080a1a2019-12-04 16:30:08 -0600155router.beforeEach((to, from, next) => {
156 if (to.matched.some(record => record.meta.requiresAuth)) {
Derick Montaguefded0d12019-12-11 06:16:40 -0600157 if (store.getters['authentication/isLoggedIn']) {
Derick Montaguee080a1a2019-12-04 16:30:08 -0600158 next();
159 return;
160 }
Derick Montaguefded0d12019-12-11 06:16:40 -0600161 next('/login');
Derick Montaguee080a1a2019-12-04 16:30:08 -0600162 } else {
163 next();
164 }
165});
166
Derick Montaguea2988f42020-01-17 13:46:30 -0600167export default router;