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