Ensure user cannot unassign in assign page, improve visuals

This commit is contained in:
Richard Cox 2021-03-19 11:44:04 +00:00
parent bae4f7176b
commit ace0bc47b9
3 changed files with 13 additions and 1 deletions

View File

@ -2194,6 +2194,7 @@ rbac:
description: Additional roles to define more fine-grain permissions model. description: Additional roles to define more fine-grain permissions model.
unknownRole: unknownRole:
description: No description provided description: No description provided
assignOnlyRole: This role is already assigned
role: role:
admin: admin:
label: Administrator label: Administrator

View File

@ -24,6 +24,10 @@ export default {
type: String, type: String,
default: _VIEW, default: _VIEW,
}, },
assignOnly: {
type: Boolean,
default: false,
},
type: { type: {
type: String, type: String,
default: 'group', default: 'group',
@ -83,6 +87,7 @@ export default {
sortedRoles: null, sortedRoles: null,
selectedRoles: [], selectedRoles: [],
startingSelectedRoles: [], startingSelectedRoles: [],
assignOnlyRoles: {},
roleChanges: {} roleChanges: {}
}; };
}, },
@ -127,6 +132,7 @@ export default {
update() { update() {
this.selectedRoles = []; this.selectedRoles = [];
this.startingSelectedRoles = []; this.startingSelectedRoles = [];
this.assignOnlyRoles = {};
if (this.isCreate) { if (this.isCreate) {
// Start with the new user default for each role // Start with the new user default for each role
Object.values(this.sortedRoles).forEach((roles) => { Object.values(this.sortedRoles).forEach((roles) => {
@ -156,6 +162,8 @@ export default {
roleId: mappedRole.id, roleId: mappedRole.id,
bindingId: boundRole.id bindingId: boundRole.id
}); });
// Checkboxes should be disabled, besides normal 'mode' ways, if we're only assigning and not removing existing roles
this.assignOnlyRoles[mappedRole.id] = this.assignOnly;
} }
}); });
}); });
@ -264,6 +272,7 @@ export default {
return verbsRequiredForLogin.includes(verbs[0]); return verbsRequiredForLogin.includes(verbs[0]);
} }
}, },
} }
}; };
</script> </script>
@ -285,6 +294,8 @@ export default {
:key="getUnique(roleType, role.id, 'checkbox')" :key="getUnique(roleType, role.id, 'checkbox')"
v-model="selectedRoles" v-model="selectedRoles"
:value-when-true="role.id" :value-when-true="role.id"
:disabled="!!assignOnlyRoles[role.id]"
:tooltip-key="!!assignOnlyRoles[role.id] ? 'rbac.globalRoles.assignOnlyRole' : ''"
:label="role.nameDisplay" :label="role.nameDisplay"
:mode="mode" :mode="mode"
@input="checkboxChanged" @input="checkboxChanged"

View File

@ -83,7 +83,7 @@ export default {
<form> <form>
<SelectPrincipal :retain-selection="true" class="mb-20" :show-my-group-types="['group']" :search-group-types="'group'" @add="setPrincipal" /> <SelectPrincipal :retain-selection="true" class="mb-20" :show-my-group-types="['group']" :search-group-types="'group'" @add="setPrincipal" />
<GlobalRoleBindings ref="grb" :group-principal-id="principalId" :mode="mode" /> <GlobalRoleBindings ref="grb" :group-principal-id="principalId" :mode="mode" :assign-only="true" />
<FooterComponent <FooterComponent
:mode="mode" :mode="mode"