Fix issue where standard user can not add cluster members

This commit is contained in:
Neil MacDougall 2023-02-27 11:52:15 +00:00
parent b60cf88156
commit bb873b5ed9
2 changed files with 29 additions and 1 deletions

View File

@ -25,6 +25,7 @@ export default Component.extend({
showCreator: true,
toAddCustom: null,
_bindings: null,
canAddMember: false,
init() {
this._super(...arguments);
@ -34,6 +35,19 @@ export default Component.extend({
if (this.registerHook) {
this.registerHook(this.saveMembers.bind(this), 'saveMembers');
}
// memberConfig.type indicates the membership type being used (e.g. cluserrolebinding);
const memberConfig = get(this, 'memberConfig');
if (memberConfig && memberConfig.type) {
const schema = get(this, 'globalStore').getById('schema', memberConfig.type.toLowerCase());
if (schema && schema.collectionMethods) {
const canAddMember = (schema.collectionMethods || []).includes('POST');
set(this, 'canAddMember', canAddMember);
}
}
},
actions: {
@ -72,6 +86,20 @@ export default Component.extend({
return get(this, 'users').sortBy('displayName');
}),
// Look at whether the user can update the member type resource
// If not, fallback to previous mechanism - must be more than 1 local user
canAddUser: computed('filteredUsers', 'access.provider', function () {
const filteredUsers = get(this, 'filteredUsers') || [];
const provider = get(this, 'access.provider');
const canAddMember = get(this, 'canAddMember');
if (canAddMember || provider !== 'local') {
return true;
}
return filteredUsers.length > 1;
}),
buildUpdateList(resource) {
let bindings = set(this, 'currentBindings', get(resource, 'roleTemplateBindings'));

View File

@ -26,7 +26,7 @@
</table>
<div class="mt-10">
{{#if (and (lte filteredUsers.length 1) (eq access.provider "local"))}}
{{#if (not canAddUser)}}
{{#tooltip-element
type="tooltip-basic"
model=(t "formMembers.members.noAddUser")