Skip to content

Commit 203a27a

Browse files
sandeepasingh116Sandeepa Singh
andauthored
add toogle on Policies page (#73)
Co-authored-by: Sandeepa Singh <[email protected]>
1 parent b311334 commit 203a27a

File tree

3 files changed

+89
-0
lines changed

3 files changed

+89
-0
lines changed

src/locales/en-US.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1173,6 +1173,8 @@
11731173
}
11741174
},
11751175
"pagePolicies": {
1176+
"acfUploadEnablement": "Unauthenticated ACF upload enablement",
1177+
"acfUploadEnablementDescription": "Allow unauthenticated users to upload ACFs.",
11761178
"hostTpm": "Host TPM",
11771179
"hostTpmDescription": "Enable to ensure the system only boots when the TPM is functional.",
11781180
"hostUsb": "Host USB enablement",

src/store/modules/SecurityAndAccess/PoliciesStore.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import i18n from '@/i18n';
44
const PoliciesStore = {
55
namespaced: true,
66
state: {
7+
acfUploadEnablement: false,
78
sshProtocolEnabled: false,
89
ipmiProtocolEnabled: false,
910
rtadEnabled: 'Disabled',
@@ -14,6 +15,7 @@ const PoliciesStore = {
1415
hostUsbEnabled: 'Enabled',
1516
},
1617
getters: {
18+
acfUploadEnablement: (state) => state.acfUploadEnablement,
1719
sshProtocolEnabled: (state) => state.sshProtocolEnabled,
1820
ipmiProtocolEnabled: (state) => state.ipmiProtocolEnabled,
1921
rtadEnabled: (state) => state.rtadEnabled,
@@ -25,6 +27,8 @@ const PoliciesStore = {
2527
hostUsbEnabled: (state) => state.hostUsbEnabled,
2628
},
2729
mutations: {
30+
setAcfUploadEnablement: (state, acfUploadEnablement) =>
31+
(state.acfUploadEnablement = acfUploadEnablement),
2832
setSshProtocolEnabled: (state, sshProtocolEnabled) =>
2933
(state.sshProtocolEnabled = sshProtocolEnabled),
3034
setIpmiProtocolEnabled: (state, ipmiProtocolEnabled) =>
@@ -65,6 +69,17 @@ const PoliciesStore = {
6569
})
6670
.catch((error) => console.log(error));
6771
},
72+
async getUnauthenticatedACFUploadEnablement({ commit }) {
73+
return await api
74+
.get('/redfish/v1/AccountService/Accounts/service')
75+
.then((response) => {
76+
commit(
77+
'setAcfUploadEnablement',
78+
response?.data?.Oem?.IBM?.ACF?.AllowUnauthACFUpload
79+
);
80+
})
81+
.catch((error) => console.log(error));
82+
},
6883
async getBiosStatus({ commit }) {
6984
return await api
7085
.get('/redfish/v1/Systems/system/Bios')
@@ -143,6 +158,37 @@ const PoliciesStore = {
143158
);
144159
});
145160
},
161+
async saveUnauthenticatedACFUploadEnablement(
162+
{ commit },
163+
updatedAcfUploadEnablement
164+
) {
165+
commit('setAcfUploadEnablement', updatedAcfUploadEnablement);
166+
const oem = {
167+
Oem: {
168+
IBM: {
169+
ACF: {
170+
AllowUnauthACFUpload: updatedAcfUploadEnablement,
171+
},
172+
},
173+
},
174+
};
175+
return await api
176+
.patch('/redfish/v1/AccountService/Accounts/service', oem)
177+
.then(() => {
178+
return i18n.t('pagePolicies.toast.successNetworkPolicyUpdate', {
179+
policy: i18n.t('pagePolicies.acfUploadEnablement'),
180+
});
181+
})
182+
.catch((error) => {
183+
console.log(error);
184+
commit('setAcfUploadEnablement', !updatedAcfUploadEnablement);
185+
throw new Error(
186+
i18n.t('pagePolicies.toast.errorNetworkPolicyUpdate', {
187+
policy: i18n.t('pagePolicies.acfUploadEnablement'),
188+
})
189+
);
190+
});
191+
},
146192
async saveIpmiProtocolState({ commit }, protocolEnabled) {
147193
commit('setIpmiProtocolEnabled', protocolEnabled);
148194
const ipmi = {

src/views/SecurityAndAccess/Policies/Policies.vue

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,31 @@
216216
</b-form-checkbox>
217217
</b-col>
218218
</b-row>
219+
<b-row v-if="isAdminUser || isServiceUser" class="section-divider">
220+
<b-col class="d-flex align-items-center justify-content-between">
221+
<dl class="mt-3 mr-3 w-75">
222+
<dt>{{ $t('pagePolicies.acfUploadEnablement') }}</dt>
223+
<dd>
224+
{{ $t('pagePolicies.acfUploadEnablementDescription') }}
225+
</dd>
226+
</dl>
227+
<b-form-checkbox
228+
id="unauthenticatedACFUploadEnablementSwitch"
229+
v-model="unauthenticatedACFUploadEnablementState"
230+
data-test-id="policies-toggle-unauthenticatedACFUploadEnablement"
231+
switch
232+
@change="changeUnauthenticatedACFUploadEnablement"
233+
>
234+
<span class="sr-only">
235+
{{ $t('pagePolicies.usbFirmwareUpdatePolicy') }}
236+
</span>
237+
<span v-if="unauthenticatedACFUploadEnablementState">
238+
{{ $t('global.status.enabled') }}
239+
</span>
240+
<span v-else>{{ $t('global.status.disabled') }}</span>
241+
</b-form-checkbox>
242+
</b-col>
243+
</b-row>
219244
</b-col>
220245
</b-row>
221246
</b-container>
@@ -316,13 +341,23 @@ export default {
316341
return newValue;
317342
},
318343
},
344+
unauthenticatedACFUploadEnablementState: {
345+
get() {
346+
return this.$store.getters['policies/acfUploadEnablement'];
347+
},
348+
set(newValue) {
349+
return newValue;
350+
},
351+
},
319352
},
353+
320354
created() {
321355
this.startLoader();
322356
Promise.all([
323357
this.$store.dispatch('policies/getBiosStatus'),
324358
this.$store.dispatch('policies/getNetworkProtocolStatus'),
325359
this.$store.dispatch('policies/getUsbFirmwareUpdatePolicyEnabled'),
360+
this.$store.dispatch('policies/getUnauthenticatedACFUploadEnablement'),
326361
this.$store.dispatch('policies/getTpmPolicy'),
327362
this.$store.dispatch('userManagement/getUsers'),
328363
this.checkForUserData(),
@@ -379,6 +414,12 @@ export default {
379414
.then((message) => this.successToast(message))
380415
.catch(({ message }) => this.errorToast(message));
381416
},
417+
changeUnauthenticatedACFUploadEnablement(state) {
418+
this.$store
419+
.dispatch('policies/saveUnauthenticatedACFUploadEnablement', state)
420+
.then((message) => this.successToast(message))
421+
.catch(({ message }) => this.errorToast(message));
422+
},
382423
checkForUserData() {
383424
if (!this.currentUser) {
384425
this.$store.dispatch('userManagement/getUsers');

0 commit comments

Comments
 (0)