xref: /openbmc/webui-vue/src/components/AppNavigation/AppNavigationMixin.js (revision 6b1a15736e939b591e787ae293745649dbb504ed)
1import IconDashboard from '@carbon/icons-vue/es/dashboard/16';
2import IconTextLinkAnalysis from '@carbon/icons-vue/es/text-link--analysis/16';
3import IconDataCheck from '@carbon/icons-vue/es/data--check/16';
4import IconSettingsAdjust from '@carbon/icons-vue/es/settings--adjust/16';
5import IconSettings from '@carbon/icons-vue/es/settings/16';
6import IconSecurity from '@carbon/icons-vue/es/security/16';
7import IconChevronUp from '@carbon/icons-vue/es/chevron--up/16';
8import IconDataBase from '@carbon/icons-vue/es/data--base--alt/16';
9import i18n from '@/i18n';
10const roles = {
11  administrator: 'Administrator',
12  operator: 'Operator',
13  readonly: 'ReadOnly',
14  noaccess: 'NoAccess',
15};
16
17const AppNavigationMixin = {
18  components: {
19    iconOverview: IconDashboard,
20    iconLogs: IconTextLinkAnalysis,
21    iconHealth: IconDataCheck,
22    iconControl: IconSettingsAdjust,
23    iconSettings: IconSettings,
24    iconSecurityAndAccess: IconSecurity,
25    iconExpand: IconChevronUp,
26    iconResourceManagement: IconDataBase,
27  },
28  data() {
29    return {
30      navigationItems: [
31        {
32          id: 'overview',
33          label: i18n.global.t('appNavigation.overview'),
34          route: '/',
35          icon: 'iconOverview',
36        },
37        {
38          id: 'logs',
39          label: i18n.global.t('appNavigation.logs'),
40          icon: 'iconLogs',
41          children: [
42            {
43              id: 'event-logs',
44              label: i18n.global.t('appNavigation.eventLogs'),
45              route: '/logs/event-logs',
46            },
47            {
48              id: 'post-code-logs',
49              label: i18n.global.t('appNavigation.postCodeLogs'),
50              route: '/logs/post-code-logs',
51            },
52            {
53              id: 'dumps',
54              label: i18n.global.t('appNavigation.dumps'),
55              route: '/logs/dumps',
56            },
57          ],
58        },
59        {
60          id: 'hardware-status',
61          label: i18n.global.t('appNavigation.hardwareStatus'),
62          icon: 'iconHealth',
63          children: [
64            {
65              id: 'inventory',
66              label: i18n.global.t('appNavigation.inventory'),
67              route: '/hardware-status/inventory',
68            },
69            {
70              id: 'sensors',
71              label: i18n.global.t('appNavigation.sensors'),
72              route: '/hardware-status/sensors',
73            },
74          ],
75        },
76        {
77          id: 'operations',
78          label: i18n.global.t('appNavigation.operations'),
79          icon: 'iconControl',
80          children: [
81            {
82              id: 'factory-reset',
83              label: i18n.global.t('appNavigation.factoryReset'),
84              route: '/operations/factory-reset',
85            },
86            {
87              id: 'kvm',
88              label: i18n.global.t('appNavigation.kvm'),
89              route: '/operations/kvm',
90            },
91            {
92              id: 'key-clear',
93              label: i18n.global.t('appNavigation.keyClear'),
94              route: '/operations/key-clear',
95            },
96            {
97              id: 'firmware',
98              label: i18n.global.t('appNavigation.firmware'),
99              route: '/operations/firmware',
100            },
101            {
102              id: 'reboot-bmc',
103              label: i18n.global.t('appNavigation.rebootBmc'),
104              route: '/operations/reboot-bmc',
105            },
106            {
107              id: 'serial-over-lan',
108              label: i18n.global.t('appNavigation.serialOverLan'),
109              route: '/operations/serial-over-lan',
110              exclusiveToRoles: [roles.administrator],
111            },
112            {
113              id: 'server-power-operations',
114              label: i18n.global.t('appNavigation.serverPowerOperations'),
115              route: '/operations/server-power-operations',
116            },
117            {
118              id: 'virtual-media',
119              label: i18n.global.t('appNavigation.virtualMedia'),
120              route: '/operations/virtual-media',
121              exclusiveToRoles: [roles.administrator],
122            },
123          ],
124        },
125        {
126          id: 'settings',
127          label: i18n.global.t('appNavigation.settings'),
128          icon: 'iconSettings',
129          children: [
130            {
131              id: 'date-time',
132              label: i18n.global.t('appNavigation.dateTime'),
133              route: '/settings/date-time',
134            },
135            {
136              id: 'network',
137              label: i18n.global.t('appNavigation.network'),
138              route: '/settings/network',
139            },
140            {
141              id: 'power-restore-policy',
142              label: i18n.global.t('appNavigation.powerRestorePolicy'),
143              route: '/settings/power-restore-policy',
144            },
145            {
146              id: 'snmp-alerts',
147              label: i18n.global.t('appNavigation.snmpAlerts'),
148              route: '/settings/snmp-alerts',
149            },
150          ],
151        },
152        {
153          id: 'security-and-access',
154          label: i18n.global.t('appNavigation.securityAndAccess'),
155          icon: 'iconSecurityAndAccess',
156          children: [
157            {
158              id: 'sessions',
159              label: i18n.global.t('appNavigation.sessions'),
160              route: '/security-and-access/sessions',
161            },
162            {
163              id: 'ldap',
164              label: i18n.global.t('appNavigation.ldap'),
165              route: '/security-and-access/ldap',
166            },
167            {
168              id: 'user-management',
169              label: i18n.global.t('appNavigation.userManagement'),
170              route: '/security-and-access/user-management',
171            },
172            {
173              id: 'policies',
174              label: i18n.global.t('appNavigation.policies'),
175              route: '/security-and-access/policies',
176            },
177            {
178              id: 'certificates',
179              label: i18n.global.t('appNavigation.certificates'),
180              route: '/security-and-access/certificates',
181            },
182          ],
183        },
184        {
185          id: 'resource-management',
186          label: i18n.global.t('appNavigation.resourceManagement'),
187          icon: 'iconResourceManagement',
188          children: [
189            {
190              id: 'power',
191              label: i18n.global.t('appNavigation.power'),
192              route: '/resource-management/power',
193            },
194          ],
195        },
196      ],
197    };
198  },
199};
200
201export default AppNavigationMixin;
202