Skip to content

Commit 36d08e4

Browse files
authored
Merge pull request #17612 from a110605/hide_harvester_manager
Hide import and manage actions for standard user in Virtualization Management page
2 parents 8b0f57d + 24f6185 commit 36d08e4

2 files changed

Lines changed: 23 additions & 11 deletions

File tree

pkg/harvester-manager/list/harvesterhci.io.management.cluster.vue

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,12 +205,6 @@ export default {
205205
};
206206
},
207207
208-
canCreateCluster() {
209-
const schema = this.$store.getters['management/schemaFor'](CAPI.RANCHER_CLUSTER);
210-
211-
return !!schema?.collectionMethods.find((x) => x.toLowerCase() === 'post');
212-
},
213-
214208
rows() {
215209
return this.hciClusters
216210
.filter((c) => {
@@ -402,7 +396,7 @@ export default {
402396
</template>
403397
404398
<template
405-
v-if="canCreateCluster"
399+
v-if="canCreateAndManageCluster"
406400
#extraActions
407401
>
408402
<router-link
@@ -445,7 +439,7 @@ export default {
445439
<template #cell:harvester="{row}">
446440
<button
447441
class="btn btn-sm role-primary"
448-
:disabled="!row.isSupportedHarvester"
442+
:disabled="!row.isSupportedHarvester || !row.canCreateAndManageCluster"
449443
@click="$router.push(row.detailLocation)"
450444
>
451445
{{ t('harvesterManager.manage') }}

pkg/harvester-manager/models/harvesterhci.io.management.cluster.js

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
import ProvCluster from '@shell/models/provisioning.cattle.io.cluster';
2-
import { DEFAULT_WORKSPACE, HCI } from '@shell/config/types';
2+
import { DEFAULT_WORKSPACE, HCI, MANAGEMENT, CAPI } from '@shell/config/types';
33
import { HARVESTER_NAME as VIRTUAL } from '@shell/config/features';
44
import { colorForState, stateDisplay, STATES_ENUM } from '@shell/plugins/dashboard-store/resource-class';
5-
65
export default class HciCluster extends ProvCluster {
76
get isSupportedHarvester() {
87
return this._isSupportedHarvester === undefined ? true : this._isSupportedHarvester;
@@ -44,6 +43,13 @@ export default class HciCluster extends ProvCluster {
4443
// We do not allow users to edit Harvester clusters from Cluster Management, so we need to re-enable that action here.
4544
get _availableActions() {
4645
const out = super._availableActions;
46+
47+
if (!this.canCreateAndManageCluster) {
48+
const allowActions = ['goToViewYaml', 'download', 'viewInApi'];
49+
50+
return out.filter((action) => allowActions.includes(action.action));
51+
}
52+
4753
const edit = out.find((action) => action.action === 'goToEdit');
4854

4955
if (edit) {
@@ -53,6 +59,17 @@ export default class HciCluster extends ProvCluster {
5359
return out;
5460
}
5561

62+
get canCreateAndManageCluster() {
63+
// we check MANAGEMENT.CLUSTER (management.cattle.io.cluster) to avoid standard user role to create or manage the harvester clusters.
64+
const mgmtClusterSchema = this.$rootGetters['management/schemaFor'](MANAGEMENT.CLUSTER);
65+
const schema = this.$rootGetters['management/schemaFor'](CAPI.RANCHER_CLUSTER);
66+
67+
const mgmtClusterCreate = !!mgmtClusterSchema?.collectionMethods?.find((x) => x.toLowerCase() === 'post');
68+
const clusterCreate = !!schema?.collectionMethods?.find((x) => x.toLowerCase() === 'post');
69+
70+
return clusterCreate && mgmtClusterCreate;
71+
}
72+
5673
get stateColor() {
5774
if (!this.isSupportedHarvester) {
5875
return colorForState(STATES_ENUM.DENIED);
@@ -98,7 +115,8 @@ export default class HciCluster extends ProvCluster {
98115
}
99116

100117
get disableResourceDetailDrawerConfigTab() {
101-
return false;
118+
// if user is not allowed to create or manage the cluster, we will disable the edit config tab in resource detail drawer.
119+
return !this.canCreateAndManageCluster;
102120
}
103121

104122
get fullDetailPageOverride() {

0 commit comments

Comments
 (0)