Am 31.10.24 um 15:06 schrieb Daniel Kral:
> Disables the "Regenerate image" button in the VM CloudInit tab for
> users, which lack the necessary permissions to do so, which are
> "VM.Config.CloudInit" and "VM.Config.CDROM". This is checked by the VM
> config update API endpoint in qemu-server, when ejecting and re-adding
> CloudInit drive images.
> 
> This is consistent with the permissions restricting access to adding
> CloudInit drives in the Hardware tab.
> 
> This is a cosmetic change as the VM config update API endpoint would
> fail because of insufficient permissions anyway.
> 

Since those users can already use the cloudinit_update endpoint (just
not via UI) and thus effectively don't need "VM.Config.CDROM", I think
it's better to change the UI to use that endpoint as well.

The endpoint was added here [0] and the switch in the UI was already
proposed [1] as part of that but it seems never applied.

[0]:
https://lore.proxmox.com/pve-devel/20220622115206.3295425-1-aderum...@odiso.com/

[1]:
https://lore.proxmox.com/pve-devel/20220622141335.3616129-2-aderum...@odiso.com/

> Signed-off-by: Daniel Kral <d.k...@proxmox.com>
> ---
> I stumbled upon this while checking on BugZilla #3105 and trying to use
> the "Regenerate image" button with a user, that had only VM.Audit and
> VM.Config.CloudInit permissions. where the user missed the
> "VM.Config.CDROM" permission and the action couldn't be completed.
> 
>  www/manager6/qemu/CloudInit.js | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/www/manager6/qemu/CloudInit.js b/www/manager6/qemu/CloudInit.js
> index 49519726..aeef8c15 100644
> --- a/www/manager6/qemu/CloudInit.js
> +++ b/www/manager6/qemu/CloudInit.js
> @@ -142,7 +142,10 @@ Ext.define('PVE.qemu.CloudInit', {
>               }
>       });
>  
> -     me.down('#savebtn').setDisabled(!found);
> +     let caps = Ext.state.Manager.get('GuiCap');
> +     let canSaveImage = !!caps.vms['VM.Config.CDROM'] && 
> !!caps.vms['VM.Config.Cloudinit'];
> +     me.down('#savebtn').setDisabled(!found || !canSaveImage);
> +
>       me.setDisabled(!found);
>       if (!found) {
>           me.getView().mask(gettext('No CloudInit Drive found'), 
> ['pve-static-mask']);


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to