blob: 683404528b06cbdb795e45fb66a1f1fe88f7de36 [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';
Dixsie Wolmers11e655c2020-08-26 14:53:01 -050020import PageNotFound from '@/views/PageNotFound';
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070021import RebootBmc from '@/views/Control/RebootBmc';
22import ServerLed from '@/views/Control/ServerLed';
23import SerialOverLan from '@/views/Control/SerialOverLan';
24import ServerPowerOperations from '@/views/Control/ServerPowerOperations';
25import Unauthorized from '@/views/Unauthorized';
26import Login from '@/views/Login';
27import ChangePassword from '@/views/ChangePassword';
28import SerialOverLanConsole from '@/views/Control/SerialOverLan/SerialOverLanConsole';
29import KvmConsole from '@/views/Control/Kvm/KvmConsole';
Yoshie Muranakafac3fbb2020-08-31 07:04:03 -070030import VirtualMedia from '@/views/Control/VirtualMedia';
Derick Montaguea2988f42020-01-17 13:46:30 -060031
32Vue.use(VueRouter);
33
Dixsie Wolmerscbcd2132020-01-30 20:58:37 -060034// Meta title is translated using i18n in App.vue and PageTitle.Vue
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080035// Example meta: {title: 'appPageTitle.overview'}
Derick Montaguea2988f42020-01-17 13:46:30 -060036const routes = [
37 {
Dixsie Wolmers11e655c2020-08-26 14:53:01 -050038 path: '/login',
39 component: LoginLayout,
40 children: [
41 {
42 path: '',
43 name: 'login',
44 component: Login,
45 meta: {
46 title: 'appPageTitle.login'
47 }
48 },
49 {
50 path: '/change-password',
51 name: 'change-password',
52 component: ChangePassword,
53 meta: {
54 title: 'appPageTitle.changePassword',
55 requiresAuth: true
56 }
57 }
58 ]
59 },
60 {
61 path: '/console',
62 component: ConsoleLayout,
63 meta: {
64 requiresAuth: true
65 },
66 children: [
67 {
68 path: 'serial-over-lan-console',
69 name: 'serial-over-lan-console',
70 component: SerialOverLanConsole,
71 meta: {
72 title: 'appPageTitle.serialOverLan'
73 }
74 },
75 {
76 path: 'kvm',
77 name: 'kvm-console',
78 component: KvmConsole,
79 meta: {
80 title: 'appPageTitle.kvm'
81 }
82 }
83 ]
84 },
85 {
Derick Montaguefded0d12019-12-11 06:16:40 -060086 path: '/',
Derick Montaguee080a1a2019-12-04 16:30:08 -060087 meta: {
88 requiresAuth: true
89 },
90 component: AppLayout,
91 children: [
92 {
Derick Montaguefded0d12019-12-11 06:16:40 -060093 path: '',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -070094 name: 'overview',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -070095 component: Overview,
Derick Montaguec8636e52019-12-06 01:28:38 -060096 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -080097 title: 'appPageTitle.overview'
Derick Montaguec8636e52019-12-06 01:28:38 -060098 }
Derick Montaguee080a1a2019-12-04 16:30:08 -060099 },
100 {
Sukanya Pandeyb1f559f2020-04-28 20:18:28 +0530101 path: '/profile-settings',
102 name: 'profile-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700103 component: ProfileSettings,
Sukanya Pandeyb1f559f2020-04-28 20:18:28 +0530104 meta: {
105 title: 'appPageTitle.profileSettings'
106 }
107 },
108 {
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700109 path: '/health/event-logs',
110 name: 'event-logs',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700111 component: EventLogs,
Yoshie Muranaka6f102342020-05-05 09:45:39 -0700112 meta: {
113 title: 'appPageTitle.eventLogs'
114 }
115 },
116 {
Yoshie Muranaka56ee7692020-05-28 13:28:29 -0700117 path: '/health/hardware-status',
118 name: 'hardware-status',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700119 component: HardwareStatus,
Yoshie Muranaka56ee7692020-05-28 13:28:29 -0700120 meta: {
121 title: 'appPageTitle.hardwareStatus'
122 }
123 },
124 {
Yoshie Muranaka30abccb2020-03-11 12:44:24 -0700125 path: '/health/sensors',
Yoshie Muranakaf2b3e6c2020-04-28 09:36:45 -0700126 name: 'sensors',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700127 component: Sensors,
Yoshie Muranaka30abccb2020-03-11 12:44:24 -0700128 meta: {
129 title: 'appPageTitle.sensors'
130 }
131 },
132 {
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -0700133 path: '/access-control/ldap',
134 name: 'ldap',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700135 component: Ldap,
Yoshie Muranakac4e38ab2020-04-09 12:41:27 -0700136 meta: {
137 title: 'appPageTitle.ldap'
138 }
139 },
140 {
Derick Montaguefded0d12019-12-11 06:16:40 -0600141 path: '/access-control/local-user-management',
142 name: 'local-users',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700143 component: LocalUserManagement,
Derick Montaguec8636e52019-12-06 01:28:38 -0600144 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800145 title: 'appPageTitle.localUserManagement'
Derick Montaguec8636e52019-12-06 01:28:38 -0600146 }
Derick Montague126eaab2019-12-23 13:33:52 -0600147 },
148 {
Yoshie Muranaka37393812020-03-24 15:25:24 -0700149 path: '/access-control/ssl-certificates',
150 name: 'ssl-certificates',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700151 component: SslCertificates,
Yoshie Muranaka37393812020-03-24 15:25:24 -0700152 meta: {
153 title: 'appPageTitle.sslCertificates'
154 }
155 },
156 {
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500157 path: '/configuration/date-time-settings',
158 name: 'date-time-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700159 component: DateTimeSettings,
Dixsie Wolmers739e4592020-06-05 07:00:06 -0500160 meta: {
161 title: 'appPageTitle.dateTimeSettings'
162 }
163 },
164 {
Yoshie Muranaka92a0a4a2020-07-15 10:30:31 -0700165 path: '/configuration/firmware',
166 name: 'firmware',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700167 component: Firmware,
Yoshie Muranaka92a0a4a2020-07-15 10:30:31 -0700168 meta: {
169 title: 'appPageTitle.firmware'
170 }
171 },
172 {
Mateusz Gapski632de222020-07-09 09:21:33 +0200173 path: '/control/kvm',
174 name: 'kvm',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700175 component: Kvm,
Mateusz Gapski632de222020-07-09 09:21:33 +0200176 meta: {
177 title: 'appPageTitle.kvm'
178 }
179 },
180 {
Sukanya Pandey9055d982020-03-31 17:37:53 +0530181 path: '/control/manage-power-usage',
182 name: 'manage-power-usage',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700183 component: ManagePowerUsage,
Sukanya Pandey9055d982020-03-31 17:37:53 +0530184 meta: {
185 title: 'appPageTitle.managePowerUsage'
186 }
187 },
188 {
Dixsie Wolmersbb81d552020-02-26 19:52:28 -0600189 path: '/configuration/network-settings',
190 name: 'network-settings',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700191 component: NetworkSettings,
Dixsie Wolmersbb81d552020-02-26 19:52:28 -0600192 meta: {
193 title: 'appPageTitle.networkSettings'
194 }
195 },
196 {
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800197 path: '/control/reboot-bmc',
198 name: 'reboot-bmc',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700199 component: RebootBmc,
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800200 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800201 title: 'appPageTitle.rebootBmc'
Yoshie Muranakac11d3892020-02-19 08:07:40 -0800202 }
203 },
204 {
SurenNeware090c2d42020-04-01 14:07:27 +0530205 path: '/control/server-led',
206 name: 'server-led',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700207 component: ServerLed,
SurenNeware090c2d42020-04-01 14:07:27 +0530208 meta: {
209 title: 'appPageTitle.serverLed'
210 }
211 },
212 {
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530213 path: '/control/serial-over-lan',
214 name: 'serial-over-lan',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700215 component: SerialOverLan,
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530216 meta: {
217 title: 'appPageTitle.serialOverLan'
218 }
219 },
220 {
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800221 path: '/control/server-power-operations',
222 name: 'server-power-operations',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700223 component: ServerPowerOperations,
Yoshie Muranakafa1512b2020-02-25 15:54:07 -0800224 meta: {
225 title: 'appPageTitle.serverPowerOperations'
226 }
227 },
228 {
Mateusz Gapski75100462020-07-30 11:01:29 +0200229 path: '/control/virtual-media',
230 name: 'virtual-media',
Yoshie Muranakafac3fbb2020-08-31 07:04:03 -0700231 component: VirtualMedia,
Mateusz Gapski75100462020-07-30 11:01:29 +0200232 meta: {
233 title: 'appPageTitle.virtualMedia'
234 }
235 },
236 {
Derick Montague126eaab2019-12-23 13:33:52 -0600237 path: '/unauthorized',
238 name: 'unauthorized',
Yoshie Muranaka2a7b5ac2020-08-17 13:25:00 -0700239 component: Unauthorized,
Derick Montague126eaab2019-12-23 13:33:52 -0600240 meta: {
Yoshie Muranaka547b5fc2020-02-24 15:42:40 -0800241 title: 'appPageTitle.unauthorized'
Derick Montague126eaab2019-12-23 13:33:52 -0600242 }
Yoshie Muranaka33058572020-06-16 13:21:21 -0700243 },
244 {
Dixsie Wolmers11e655c2020-08-26 14:53:01 -0500245 path: '*',
246 name: 'page-not-found',
247 component: PageNotFound,
Yoshie Muranaka33058572020-06-16 13:21:21 -0700248 meta: {
Dixsie Wolmers11e655c2020-08-26 14:53:01 -0500249 title: 'appPageTitle.pageNotFound'
Mateusz Gapski632de222020-07-09 09:21:33 +0200250 }
Sukanya Pandey96f69ca2020-05-20 15:32:57 +0530251 }
252 ]
Derick Montaguea2988f42020-01-17 13:46:30 -0600253 }
Derick Montaguea2988f42020-01-17 13:46:30 -0600254];
255
256const router = new VueRouter({
Derick Montaguea2988f42020-01-17 13:46:30 -0600257 base: process.env.BASE_URL,
258 routes,
Yoshie Muranaka71ac2302019-12-26 11:43:36 -0800259 linkExactActiveClass: 'nav-link--current'
Derick Montaguea2988f42020-01-17 13:46:30 -0600260});
261
Derick Montaguee080a1a2019-12-04 16:30:08 -0600262router.beforeEach((to, from, next) => {
263 if (to.matched.some(record => record.meta.requiresAuth)) {
Derick Montaguefded0d12019-12-11 06:16:40 -0600264 if (store.getters['authentication/isLoggedIn']) {
Derick Montaguee080a1a2019-12-04 16:30:08 -0600265 next();
266 return;
267 }
Derick Montaguefded0d12019-12-11 06:16:40 -0600268 next('/login');
Derick Montaguee080a1a2019-12-04 16:30:08 -0600269 } else {
270 next();
271 }
272});
273
Derick Montaguea2988f42020-01-17 13:46:30 -0600274export default router;