xref: /openbmc/webui-vue/src/router/routes.js (revision 6b1a15736e939b591e787ae293745649dbb504ed)
1import AppLayout from '@/layouts/AppLayout.vue';
2import ChangePassword from '@/views/ChangePassword';
3import ConsoleLayout from '@/layouts/ConsoleLayout.vue';
4import DateTime from '@/views/Settings/DateTime';
5import EventLogs from '@/views/Logs/EventLogs';
6import FactoryReset from '@/views/Operations/FactoryReset';
7import Firmware from '@/views/Operations/Firmware';
8import Inventory from '@/views/HardwareStatus/Inventory';
9import Kvm from '@/views/Operations/Kvm';
10import KvmConsole from '@/views/Operations/Kvm/KvmConsole';
11import Sessions from '../views/SecurityAndAccess/Sessions';
12import Ldap from '@/views/SecurityAndAccess/Ldap';
13import UserManagement from '@/views/SecurityAndAccess/UserManagement';
14import Login from '@/views/Login';
15import LoginLayout from '@/layouts/LoginLayout';
16import Network from '@/views/Settings/Network';
17import Overview from '@/views/Overview';
18import PageNotFound from '@/views/PageNotFound';
19import PostCodeLogs from '@/views/Logs/PostCodeLogs';
20import PowerRestorePolicy from '@/views/Settings/PowerRestorePolicy';
21import ProfileSettings from '@/views/ProfileSettings';
22import RebootBmc from '@/views/Operations/RebootBmc';
23import Policies from '@/views/SecurityAndAccess/Policies';
24import KeyClear from '@/views/Operations/KeyClear';
25import Sensors from '@/views/HardwareStatus/Sensors';
26import SerialOverLan from '@/views/Operations/SerialOverLan';
27import SerialOverLanConsole from '@/views/Operations/SerialOverLan/SerialOverLanConsole';
28import ServerPowerOperations from '@/views/Operations/ServerPowerOperations';
29import Certificates from '@/views/SecurityAndAccess/Certificates';
30import VirtualMedia from '@/views/Operations/VirtualMedia';
31import Power from '@/views/ResourceManagement/Power';
32import SnmpAlerts from '@/views/Settings/SnmpAlerts';
33import i18n from '@/i18n';
34
35import Dumps from '@/views/Logs/Dumps';
36
37const roles = {
38  administrator: 'Administrator',
39  operator: 'Operator',
40  readonly: 'ReadOnly',
41  noaccess: 'NoAccess',
42};
43
44const routes = [
45  {
46    path: '/login',
47    component: LoginLayout,
48    children: [
49      {
50        path: '',
51        name: 'login',
52        component: Login,
53        meta: {
54          title: i18n.global.t('appPageTitle.login'),
55        },
56      },
57      {
58        path: '/change-password',
59        name: 'change-password',
60        component: ChangePassword,
61        meta: {
62          title: i18n.global.t('appPageTitle.changePassword'),
63          requiresAuth: true,
64        },
65      },
66    ],
67  },
68  {
69    path: '/console',
70    component: ConsoleLayout,
71    meta: {
72      requiresAuth: true,
73    },
74    children: [
75      {
76        path: 'serial-over-lan-console',
77        name: 'serial-over-lan-console',
78        component: SerialOverLanConsole,
79        meta: {
80          title: i18n.global.t('appPageTitle.serialOverLan'),
81        },
82      },
83      {
84        path: 'kvm',
85        name: 'kvm-console',
86        component: KvmConsole,
87        meta: {
88          title: i18n.global.t('appPageTitle.kvm'),
89        },
90      },
91    ],
92  },
93  {
94    path: '/',
95    meta: {
96      requiresAuth: true,
97    },
98    component: AppLayout,
99    children: [
100      {
101        path: '',
102        name: 'overview',
103        component: Overview,
104        meta: {
105          title: i18n.global.t('appPageTitle.overview'),
106        },
107      },
108      {
109        path: '/profile-settings',
110        name: 'profile-settings',
111        component: ProfileSettings,
112        meta: {
113          title: i18n.global.t('appPageTitle.profileSettings'),
114        },
115      },
116      {
117        path: '/logs/event-logs',
118        name: 'event-logs',
119        component: EventLogs,
120        meta: {
121          title: i18n.global.t('appPageTitle.eventLogs'),
122        },
123      },
124      {
125        path: '/logs/dumps',
126        name: 'dumps',
127        component: Dumps,
128        meta: {
129          title: i18n.global.t('appPageTitle.dumps'),
130        },
131      },
132      {
133        path: '/logs/post-code-logs',
134        name: 'post-code-logs',
135        component: PostCodeLogs,
136        meta: {
137          title: i18n.global.t('appPageTitle.postCodeLogs'),
138        },
139      },
140      {
141        path: '/hardware-status/inventory',
142        name: 'inventory',
143        component: Inventory,
144        meta: {
145          title: i18n.global.t('appPageTitle.inventory'),
146        },
147      },
148      {
149        path: '/hardware-status/sensors',
150        name: 'sensors',
151        component: Sensors,
152        meta: {
153          title: i18n.global.t('appPageTitle.sensors'),
154        },
155      },
156      {
157        path: '/security-and-access/sessions',
158        name: 'sessions',
159        component: Sessions,
160        meta: {
161          title: i18n.global.t('appPageTitle.sessions'),
162        },
163      },
164      {
165        path: '/security-and-access/ldap',
166        name: 'ldap',
167        component: Ldap,
168        meta: {
169          title: i18n.global.t('appPageTitle.ldap'),
170        },
171      },
172      {
173        path: '/security-and-access/user-management',
174        name: 'user-management',
175        component: UserManagement,
176        meta: {
177          title: i18n.global.t('appPageTitle.userManagement'),
178        },
179      },
180      {
181        path: '/security-and-access/policies',
182        name: 'policies',
183        component: Policies,
184        meta: {
185          title: i18n.global.t('appPageTitle.policies'),
186        },
187      },
188      {
189        path: '/security-and-access/certificates',
190        name: 'certificates',
191        component: Certificates,
192        meta: {
193          title: i18n.global.t('appPageTitle.certificates'),
194        },
195      },
196      {
197        path: '/settings/date-time',
198        name: 'date-time',
199        component: DateTime,
200        meta: {
201          title: i18n.global.t('appPageTitle.dateTime'),
202        },
203      },
204      {
205        path: '/settings/snmp-alerts',
206        name: 'snmp-alerts',
207        component: SnmpAlerts,
208        meta: {
209          title: i18n.global.t('appPageTitle.snmpAlerts'),
210        },
211      },
212      {
213        path: '/operations/factory-reset',
214        name: 'factory-reset',
215        component: FactoryReset,
216        meta: {
217          title: i18n.global.t('appPageTitle.factoryReset'),
218        },
219      },
220      {
221        path: '/operations/key-clear',
222        name: 'key-clear',
223        component: KeyClear,
224        meta: {
225          title: i18n.global.t('appPageTitle.keyClear'),
226        },
227      },
228      {
229        path: '/operations/kvm',
230        name: 'kvm',
231        component: Kvm,
232        meta: {
233          title: i18n.global.t('appPageTitle.kvm'),
234        },
235      },
236      {
237        path: '/operations/firmware',
238        name: 'firmware',
239        component: Firmware,
240        meta: {
241          title: i18n.global.t('appPageTitle.firmware'),
242        },
243      },
244      {
245        path: '/settings/network',
246        name: 'network',
247        component: Network,
248        meta: {
249          title: i18n.global.t('appPageTitle.network'),
250        },
251      },
252      {
253        path: '/settings/power-restore-policy',
254        name: 'power-restore-policy',
255        component: PowerRestorePolicy,
256        meta: {
257          title: i18n.global.t('appPageTitle.powerRestorePolicy'),
258        },
259      },
260      {
261        path: '/resource-management/power',
262        name: 'power',
263        component: Power,
264        meta: {
265          title: i18n.global.t('appPageTitle.power'),
266        },
267      },
268      {
269        path: '/operations/reboot-bmc',
270        name: 'reboot-bmc',
271        component: RebootBmc,
272        meta: {
273          title: i18n.global.t('appPageTitle.rebootBmc'),
274        },
275      },
276      {
277        path: '/operations/serial-over-lan',
278        name: 'serial-over-lan',
279        component: SerialOverLan,
280        meta: {
281          title: i18n.global.t('appPageTitle.serialOverLan'),
282          exclusiveToRoles: [roles.administrator],
283        },
284      },
285      {
286        path: '/operations/server-power-operations',
287        name: 'server-power-operations',
288        component: ServerPowerOperations,
289        meta: {
290          title: i18n.global.t('appPageTitle.serverPowerOperations'),
291        },
292      },
293      {
294        path: '/operations/virtual-media',
295        name: 'virtual-media',
296        component: VirtualMedia,
297        meta: {
298          title: i18n.global.t('appPageTitle.virtualMedia'),
299          exclusiveToRoles: [roles.administrator],
300        },
301      },
302      {
303        path: '*',
304        name: 'page-not-found',
305        component: PageNotFound,
306        meta: {
307          title: i18n.global.t('appPageTitle.pageNotFound'),
308        },
309      },
310    ],
311  },
312];
313
314export { routes as default, roles };
315