xref: /openbmc/webui-vue/src/views/Operations/KeyClear/KeyClear.vue (revision d36ac8a8be8636ddd0e64ce005d507b21bcdeb00)
1<template>
2  <b-container fluid="xl">
3    <page-title :description="$t('pageKeyClear.description')" />
4    <b-row>
5      <b-col md="8" xl="6">
6        <alert variant="info" class="mb-4">
7          <div class="fw-bold">
8            {{ $t('pageKeyClear.alert.title') }}
9          </div>
10          <div>
11            {{ $t('pageKeyClear.alert.description') }}
12          </div>
13        </alert>
14      </b-col>
15    </b-row>
16    <!-- Reset Form -->
17    <b-form id="key-clear" @submit.prevent="onKeyClearSubmit(keyOption)">
18      <b-row>
19        <b-col md="8">
20          <b-form-group :label="$t('pageKeyClear.form.keyClearOptionsLabel')">
21            <b-form-radio-group
22              id="key-clear-options"
23              v-model="keyOption"
24              stacked
25            >
26              <b-form-radio class="mb-1" value="NONE">
27                {{ $t('pageKeyClear.form.none') }}
28              </b-form-radio>
29              <b-form-text id="key-clear-not-requested" class="ms-4 mb-3">
30                {{ $t('pageKeyClear.form.keyClearNotRequested') }}
31              </b-form-text>
32              <b-form-radio class="mb-1" value="ALL">
33                {{ $t('pageKeyClear.form.clearAllLabel') }}
34              </b-form-radio>
35              <b-form-text id="clear-all" class="ms-4 mb-3">
36                {{ $t('pageKeyClear.form.clearAllHeperText') }}
37              </b-form-text>
38              <b-form-radio class="mb-1" value="POWERVM_SYSKEY">
39                {{ $t('pageKeyClear.form.clearHypervisorSystemKeyLabel') }}
40              </b-form-radio>
41              <b-form-text id="clear-hypervisor-key" class="ms-4 mb-3">
42                {{ $t('pageKeyClear.form.clearHypervisorSystemKeyHelperText') }}
43              </b-form-text>
44              <template v-if="username == 'service'">
45                <b-form-radio class="mb-1" value="MFG_ALL">
46                  {{ $t('pageKeyClear.form.clearAllSetGenesisIPL') }}
47                </b-form-radio>
48                <b-form-radio class="mb-1" value="MFG">
49                  {{ $t('pageKeyClear.form.setFactoryDefault') }}
50                </b-form-radio>
51              </template>
52            </b-form-radio-group>
53          </b-form-group>
54          <b-button
55            type="submit"
56            variant="primary"
57            data-test-id="keyClear-button-submit"
58          >
59            {{ $t('pageKeyClear.form.clear') }}
60          </b-button>
61        </b-col>
62      </b-row>
63    </b-form>
64  </b-container>
65</template>
66
67<script>
68import PageTitle from '@/components/Global/PageTitle';
69import BVToastMixin from '@/components/Mixins/BVToastMixin';
70import LoadingBarMixin from '@/components/Mixins/LoadingBarMixin';
71import Alert from '@/components/Global/Alert';
72import { useI18n } from 'vue-i18n';
73import i18n from '@/i18n';
74import { useModal } from 'bootstrap-vue-next';
75
76export default {
77  name: 'KeyClear',
78  components: { PageTitle, Alert },
79  mixins: [LoadingBarMixin, BVToastMixin],
80  setup() {
81    const bvModal = useModal();
82    return { bvModal };
83  },
84  data() {
85    return {
86      $t: useI18n().t,
87      keyOption: 'NONE',
88      username: this.$store.getters['global/username'],
89    };
90  },
91  created() {
92    this.hideLoader();
93  },
94  methods: {
95    onKeyClearSubmit(valueSelected) {
96      this.$confirm(i18n.global.t('pageKeyClear.modal.clearAllMessage'), {
97        title: i18n.global.t('pageKeyClear.modal.clearAllTitle'),
98        okTitle: i18n.global.t('pageKeyClear.modal.clear'),
99        okVariant: 'danger',
100        cancelTitle: i18n.global.t('global.action.cancel'),
101        autoFocusButton: 'cancel',
102      }).then((clearConfirmed) => {
103        if (clearConfirmed) {
104          this.$store
105            .dispatch('keyClear/clearEncryptionKeys', valueSelected)
106            .then((message) => this.successToast(message))
107            .catch(({ message }) => this.errorToast(message));
108        }
109      });
110    },
111  },
112};
113</script>
114