blob: 4f66ae73b11f856038b6d2c47f153fb90c09fabf [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';
Sukanya Pandey96f69ca2020-05-20 15:32:57 +05306import ConsoleLayout from '@/layouts/ConsoleLayout.vue';
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -07007import Overview from '@/views/Overview';
8import ProfileSettings from '@/views/ProfileSettings';
9import EventLogs from '@/views/Health/EventLogs';
10import HardwareStatus from '@/views/Health/HardwareStatus';
11import Sensors from '@/views/Health/Sensors';
12import Ldap from '@/views/AccessControl/Ldap';
13import LocalUserManagement from '@/views/AccessControl/LocalUserManagement';
14import SslCertificates from '@/views/AccessControl/SslCertificates';
15import DateTimeSettings from '@/views/Configuration/DateTimeSettings';
16import Firmware from '@/views/Configuration/Firmware';
17import Kvm from '@/views/Control/Kvm';
18import ManagePowerUsage from '@/views/Control/ManagePowerUsage';
19import NetworkSettings from '@/views/Configuration/NetworkSettings';
20import RebootBmc from '@/views/Control/RebootBmc';
21import ServerLed from '@/views/Control/ServerLed';
22import SerialOverLan from '@/views/Control/SerialOverLan';
23import ServerPowerOperations from '@/views/Control/ServerPowerOperations';
24import Unauthorized from '@/views/Unauthorized';
25import Login from '@/views/Login';
26import ChangePassword from '@/views/ChangePassword';
27import SerialOverLanConsole from '@/views/Control/SerialOverLan/SerialOverLanConsole';
28import KvmConsole from '@/views/Control/Kvm/KvmConsole';
Yoshie Muranakafac3fbb2020-08-31 07:04:03 -070029import VirtualMedia from '@/views/Control/VirtualMedia';
Derick Montaguea2988f42020-01-17 13:46:30 -060030
31Vue.use(VueRouter);
32
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060033// Meta title is translated using i18n in App.vue and PageTitle.Vue
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080034// Example meta: {title: 'appPageTitle.overview'}
Derick Montaguea2988f42020-01-17 13:46:30 -060035const routes = [
36 {
Derick Montaguefded0d12019-12-11 06:16:40 -060037 path: '/',
Derick Montaguee080a1a2019-12-04 16:30:08 -060038 meta: {
39 requiresAuth: true
40 },
41 component: AppLayout,
42 children: [
43 {
Derick Montaguefded0d12019-12-11 06:16:40 -060044 path: '',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -070045 name: 'overview',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070046 component: Overview,
Derick Montaguec8636e52019-12-06 01:28:38 -060047 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080048 title: 'appPageTitle.overview'
Derick Montaguec8636e52019-12-06 01:28:38 -060049 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060050 },
51 {
Sukanya Pandeyb1f559f2020-04-28 20:18:28 +053052 path: '/profile-settings',
53 name: 'profile-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070054 component: ProfileSettings,
Sukanya Pandeyb1f559f2020-04-28 20:18:28 +053055 meta: {
56 title: 'appPageTitle.profileSettings'
57 }
58 },
59 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -070060 path: '/health/event-logs',
61 name: 'event-logs',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070062 component: EventLogs,
Yoshie Muranaka6f102342020-05-05 09:45:39 -070063 meta: {
64 title: 'appPageTitle.eventLogs'
65 }
66 },
67 {
Yoshie Muranaka56ee7692020-05-28 13:28:29 -070068 path: '/health/hardware-status',
69 name: 'hardware-status',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070070 component: HardwareStatus,
Yoshie Muranaka56ee7692020-05-28 13:28:29 -070071 meta: {
72 title: 'appPageTitle.hardwareStatus'
73 }
74 },
75 {
Yoshie Muranaka30abccb2020-03-11 12:44:24 -070076 path: '/health/sensors',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -070077 name: 'sensors',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070078 component: Sensors,
Yoshie Muranaka30abccb2020-03-11 12:44:24 -070079 meta: {
80 title: 'appPageTitle.sensors'
81 }
82 },
83 {
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -070084 path: '/access-control/ldap',
85 name: 'ldap',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070086 component: Ldap,
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -070087 meta: {
88 title: 'appPageTitle.ldap'
89 }
90 },
91 {
Derick Montaguefded0d12019-12-11 06:16:40 -060092 path: '/access-control/local-user-management',
93 name: 'local-users',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070094 component: LocalUserManagement,
Derick Montaguec8636e52019-12-06 01:28:38 -060095 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080096 title: 'appPageTitle.localUserManagement'
Derick Montaguec8636e52019-12-06 01:28:38 -060097 }
Derick Montague126eaab2019-12-23 13:33:52 -060098 },
99 {
Yoshie Muranaka37393812020-03-24 15:25:24 -0700100 path: '/access-control/ssl-certificates',
101 name: 'ssl-certificates',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700102 component: SslCertificates,
Yoshie Muranaka37393812020-03-24 15:25:24 -0700103 meta: {
104 title: 'appPageTitle.sslCertificates'
105 }
106 },
107 {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500108 path: '/configuration/date-time-settings',
109 name: 'date-time-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700110 component: DateTimeSettings,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500111 meta: {
112 title: 'appPageTitle.dateTimeSettings'
113 }
114 },
115 {
Yoshie Muranaka92a0a4a2020-07-15 10:30:31 -0700116 path: '/configuration/firmware',
117 name: 'firmware',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700118 component: Firmware,
Yoshie Muranaka92a0a4a2020-07-15 10:30:31 -0700119 meta: {
120 title: 'appPageTitle.firmware'
121 }
122 },
123 {
Mateusz Gapski632de222020-07-09 09:21:33 +0200124 path: '/control/kvm',
125 name: 'kvm',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700126 component: Kvm,
Mateusz Gapski632de222020-07-09 09:21:33 +0200127 meta: {
128 title: 'appPageTitle.kvm'
129 }
130 },
131 {
Sukanya Pandey9055d982020-03-31 17:37:53 +0530132 path: '/control/manage-power-usage',
133 name: 'manage-power-usage',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700134 component: ManagePowerUsage,
Sukanya Pandey9055d982020-03-31 17:37:53 +0530135 meta: {
136 title: 'appPageTitle.managePowerUsage'
137 }
138 },
139 {
Dixsie Wolmersbb81d552020-02-26 19:52:28 -0600140 path: '/configuration/network-settings',
141 name: 'network-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700142 component: NetworkSettings,
Dixsie Wolmersbb81d552020-02-26 19:52:28 -0600143 meta: {
144 title: 'appPageTitle.networkSettings'
145 }
146 },
147 {
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800148 path: '/control/reboot-bmc',
149 name: 'reboot-bmc',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700150 component: RebootBmc,
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800151 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800152 title: 'appPageTitle.rebootBmc'
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800153 }
154 },
155 {
SurenNeware090c2d42020-04-01 14:07:27 +0530156 path: '/control/server-led',
157 name: 'server-led',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700158 component: ServerLed,
SurenNeware090c2d42020-04-01 14:07:27 +0530159 meta: {
160 title: 'appPageTitle.serverLed'
161 }
162 },
163 {
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530164 path: '/control/serial-over-lan',
165 name: 'serial-over-lan',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700166 component: SerialOverLan,
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530167 meta: {
168 title: 'appPageTitle.serialOverLan'
169 }
170 },
171 {
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800172 path: '/control/server-power-operations',
173 name: 'server-power-operations',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700174 component: ServerPowerOperations,
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800175 meta: {
176 title: 'appPageTitle.serverPowerOperations'
177 }
178 },
179 {
Mateusz Gapski75100462020-07-30 11:01:29 +0200180 path: '/control/virtual-media',
181 name: 'virtual-media',
Yoshie Muranakafac3fbb2020-08-31 07:04:03 -0700182 component: VirtualMedia,
Mateusz Gapski75100462020-07-30 11:01:29 +0200183 meta: {
184 title: 'appPageTitle.virtualMedia'
185 }
186 },
187 {
Derick Montague126eaab2019-12-23 13:33:52 -0600188 path: '/unauthorized',
189 name: 'unauthorized',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700190 component: Unauthorized,
Derick Montague126eaab2019-12-23 13:33:52 -0600191 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800192 title: 'appPageTitle.unauthorized'
Derick Montague126eaab2019-12-23 13:33:52 -0600193 }
Derick Montaguee080a1a2019-12-04 16:30:08 -0600194 }
195 ]
Derick Montaguea2988f42020-01-17 13:46:30 -0600196 },
197 {
Derick Montaguefded0d12019-12-11 06:16:40 -0600198 path: '/login',
Yoshie Muranaka6173bc62020-06-16 12:39:07 -0700199 component: LoginLayout,
200 children: [
201 {
202 path: '',
203 name: 'login',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700204 component: Login,
Yoshie Muranaka6173bc62020-06-16 12:39:07 -0700205 meta: {
206 title: 'appPageTitle.login'
207 }
Yoshie Muranaka33058572020-06-16 13:21:21 -0700208 },
209 {
210 path: '/change-password',
211 name: 'change-password',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700212 component: ChangePassword,
Yoshie Muranaka33058572020-06-16 13:21:21 -0700213 meta: {
Yoshie Muranaka2c98b092020-06-22 13:28:09 -0700214 title: 'appPageTitle.changePassword',
215 requiresAuth: true
Yoshie Muranaka33058572020-06-16 13:21:21 -0700216 }
Yoshie Muranaka6173bc62020-06-16 12:39:07 -0700217 }
218 ]
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530219 },
220 {
221 path: '/console',
222 component: ConsoleLayout,
223 meta: {
224 requiresAuth: true
225 },
226 children: [
227 {
Mateusz Gapski632de222020-07-09 09:21:33 +0200228 path: 'serial-over-lan-console',
229 name: 'serial-over-lan-console',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700230 component: SerialOverLanConsole,
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530231 meta: {
232 title: 'appPageTitle.serialOverLan'
233 }
Mateusz Gapski632de222020-07-09 09:21:33 +0200234 },
235 {
236 path: 'kvm',
237 name: 'kvm-console',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700238 component: KvmConsole,
Mateusz Gapski632de222020-07-09 09:21:33 +0200239 meta: {
240 title: 'appPageTitle.kvm'
241 }
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530242 }
243 ]
Derick Montaguea2988f42020-01-17 13:46:30 -0600244 }
Derick Montaguea2988f42020-01-17 13:46:30 -0600245];
246
247const router = new VueRouter({
Derick Montaguea2988f42020-01-17 13:46:30 -0600248 base: process.env.BASE_URL,
249 routes,
Yoshie Muranaka71ac2302019-12-26 11:43:36 -0800250 linkExactActiveClass: 'nav-link--current'
Derick Montaguea2988f42020-01-17 13:46:30 -0600251});
252
Derick Montaguee080a1a2019-12-04 16:30:08 -0600253router.beforeEach((to, from, next) => {
254 if (to.matched.some(record => record.meta.requiresAuth)) {
Derick Montaguefded0d12019-12-11 06:16:40 -0600255 if (store.getters['authentication/isLoggedIn']) {
Derick Montaguee080a1a2019-12-04 16:30:08 -0600256 next();
257 return;
258 }
Derick Montaguefded0d12019-12-11 06:16:40 -0600259 next('/login');
Derick Montaguee080a1a2019-12-04 16:30:08 -0600260 } else {
261 next();
262 }
263});
264
Derick Montaguea2988f42020-01-17 13:46:30 -0600265export default router;