ui: Don't show the CRD menu for read-only intentions (#11149)
* ui: Don't show the CRD menu for read-only intentions The UI bug here manifests itself only when a user/token is configured to have read-only access to intentions. Instead of only letting folks click to see a read only page of the intention, we would show an additional message saying that the intention was read-only due to it being 'Managed by [a kubernetes] CRD'. Whilst the intention was still read only, this extra message was still confusing for users. This PR fixes up the conditional logic and further moves the logic to use ember-can - looking at the history of the files in question, this bug snuck itself in partly due to it being 'permission-y type stuff' previous to using ember-can and when something being editable or not was nothing to do with ACLs. Then we moved to start using ember-can without completely realising what IsEditable previously meant. So overall the code here is a tiny bit clearer/cleaner by adding a proper can view CRD intention instead of overloading the idea of 'editability'.
This commit is contained in:
parent
2d3f08263c
commit
d157c63fe4
|
@ -0,0 +1,3 @@
|
|||
```release-note:bug
|
||||
ui: Don't show a CRD warning for read-only intentions
|
||||
```
|
|
@ -4,6 +4,9 @@ export default class IntentionAbility extends BaseAbility {
|
|||
resource = 'intention';
|
||||
|
||||
get canWrite() {
|
||||
return super.canWrite && (typeof this.item === 'undefined' || this.item.IsEditable);
|
||||
return super.canWrite && (typeof this.item === 'undefined' || !this.canViewCRD);
|
||||
}
|
||||
get canViewCRD() {
|
||||
return (typeof this.item !== 'undefined' && this.item.IsManagedByCRD);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ as |item index|>
|
|||
{{/if}}
|
||||
</td>
|
||||
</BlockSlot>
|
||||
{{#if (or (can "write intention" item=item) (can "view CRD intention" item=item))}}
|
||||
<BlockSlot @name="actions" as |index change checked|>
|
||||
<PopoverMenu
|
||||
@expanded={{if (eq checked index) true false}}
|
||||
|
@ -113,7 +114,7 @@ as |item index|>
|
|||
</InformedAction>
|
||||
</div>
|
||||
</li>
|
||||
{{else}}
|
||||
{{else if (can "view CRD intention" item=item)}}
|
||||
<li role="none">
|
||||
<div role="menu">
|
||||
<InformedAction
|
||||
|
@ -152,4 +153,5 @@ as |item index|>
|
|||
</BlockSlot>
|
||||
</PopoverMenu>
|
||||
</BlockSlot>
|
||||
{{/if}}
|
||||
</TabularCollection>
|
||||
|
|
|
@ -41,9 +41,4 @@ export default class Intention extends Model {
|
|||
);
|
||||
return typeof meta !== 'undefined';
|
||||
}
|
||||
|
||||
@computed('IsManagedByCRD')
|
||||
get IsEditable() {
|
||||
return !this.IsManagedByCRD;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ as |item|}}
|
|||
</BlockSlot>
|
||||
<BlockSlot @name="header">
|
||||
<h1>
|
||||
{{#if item.IsEditable}}
|
||||
{{#if (can "write intention" item=item)}}
|
||||
{{#if item.ID}}
|
||||
<route.Title @title="Edit Intention" />
|
||||
{{else}}
|
||||
|
|
Loading…
Reference in New Issue