Skip to content

Commit 99fe228

Browse files
aravinths1kirankumarb07
authored andcommitted
Add privilege check to power operation button
Disables power operation buttons for users with "Read-only" privileges. This change ensures that only "Operator" and administrative users can perform power operations, preventing unauthorized actions and enhancing system security. Change-Id: I515ede092cef3c82a110d9534d9f8d3d6afc3135 Signed-off-by: Aravinth S <[email protected]>
1 parent 399ade7 commit 99fe228

File tree

3 files changed

+30
-2
lines changed

3 files changed

+30
-2
lines changed

src/store/modules/GlobalStore.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ const HOST_STATE = {
77
diagnosticMode: 'xyz.openbmc_project.State.Host.HostState.DiagnosticMode',
88
};
99

10+
const privilegesId = {
11+
admin: 'Administrator',
12+
operator: 'Operator',
13+
readOnly: 'ReadOnly',
14+
};
15+
1016
const serverStateMapper = (hostState) => {
1117
switch (hostState) {
1218
case HOST_STATE.on:
@@ -137,5 +143,6 @@ const GlobalStore = {
137143
},
138144
},
139145
};
146+
export { GlobalStore, serverStateMapper, privilegesId };
140147

141148
export default GlobalStore;

src/views/Operations/ServerPowerOperations/BootSettings.vue

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,12 @@
4242
{{ $t('global.status.enabled') }}
4343
</b-form-checkbox>
4444
</b-form-group>
45-
<b-button variant="primary" type="submit" class="mb-3">
45+
<b-button
46+
variant="primary"
47+
type="submit"
48+
class="mb-3"
49+
:disabled="isButtonDisable"
50+
>
4651
{{ $t('global.action.save') }}
4752
</b-button>
4853
</b-form>
@@ -59,6 +64,13 @@ import { useVuelidate } from '@vuelidate/core';
5964
export default {
6065
name: 'BootSettings',
6166
mixins: [BVToastMixin, LoadingBarMixin],
67+
props: {
68+
isButtonDisable: {
69+
required: true,
70+
type: Boolean,
71+
default: false,
72+
},
73+
},
6274
setup() {
6375
return {
6476
v$: useVuelidate(),

src/views/Operations/ServerPowerOperations/ServerPowerOperations.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<page-section
6060
:section-title="$t('pageServerPowerOperations.serverBootSettings')"
6161
>
62-
<boot-settings />
62+
<boot-settings :is-button-disable="isButtonDisable" />
6363
</page-section>
6464
</b-col>
6565
<b-col sm="8" md="6" xl="7">
@@ -78,6 +78,7 @@
7878
<b-button
7979
variant="primary"
8080
data-test-id="serverPowerOperations-button-powerOn"
81+
:disabled="isButtonDisable"
8182
@click="powerOn"
8283
>
8384
{{ $t('pageServerPowerOperations.powerOn') }}
@@ -116,6 +117,7 @@
116117
variant="primary"
117118
type="submit"
118119
data-test-id="serverPowerOperations-button-reboot"
120+
:disabled="isButtonDisable"
119121
>
120122
{{ $t('pageServerPowerOperations.reboot') }}
121123
</b-button>
@@ -154,6 +156,7 @@
154156
variant="primary"
155157
type="submit"
156158
data-test-id="serverPowerOperations-button-shutDown"
159+
:disabled="isButtonDisable"
157160
>
158161
{{ $t('pageServerPowerOperations.shutDown') }}
159162
</b-button>
@@ -175,6 +178,8 @@ import Alert from '@/components/Global/Alert';
175178
import InfoTooltip from '@/components/Global/InfoTooltip';
176179
import { useI18n } from 'vue-i18n';
177180
import i18n from '@/i18n';
181+
import { privilegesId } from '@/store/modules/GlobalStore';
182+
import { mapGetters } from 'vuex';
178183
179184
export default {
180185
name: 'ServerPowerOperations',
@@ -194,6 +199,10 @@ export default {
194199
};
195200
},
196201
computed: {
202+
...mapGetters('global', ['userPrivilege']),
203+
isButtonDisable() {
204+
return this.userPrivilege === privilegesId.readOnly;
205+
},
197206
serverStatus() {
198207
return this.$store.getters['global/serverStatus'];
199208
},

0 commit comments

Comments
 (0)