]> git.proxmox.com Git - pve-manager.git/commitdiff
ui: qemu/HardwareView: fix CDRom permission checkss
authorAaron Lauterer <a.lauterer@proxmox.com>
Fri, 12 Feb 2021 15:57:51 +0000 (16:57 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Fri, 19 Feb 2021 16:22:30 +0000 (17:22 +0100)
There are several types of drives that use the same config keys. Most
notably CDRom and regular VM disks (EFI and cloudinit exist as well).

Since there is a dedicated permission for CDRom drives we need to check
permissions in more detail, depending on what type of drive it actually
is for things like the edit, remove and Add -> CDRom buttons.

The permission check in the row definition itself which only checked for
'VM.Config.Disk' permissions (never_delete) had to be removed and finer
grained checks added for the individual buttons. This also meant a bit
of reshuffling in the checks what kind of disk the current one is.

Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
www/manager6/qemu/HardwareView.js

index d0b2a00d86ee34d854f5596cfa99ae9e6416c15f..41d65b406bb350ffd3c41e3cbaa602a387ef6d60 100644 (file)
@@ -225,7 +225,6 @@ Ext.define('PVE.qemu.HardwareView', {
                group: 10,
                iconCls: 'hdd-o',
                editor: 'PVE.qemu.HDEdit',
-               never_delete: !caps.vms['VM.Config.Disk'],
                isOnStorageBus: true,
                header: gettext('Hard Disk') + ' (' + confid +')',
                cdheader: gettext('CD/DVD Drive') + ' (' + confid +')',
@@ -596,12 +595,21 @@ Ext.define('PVE.qemu.HardwareView', {
            const isEfi = key === 'efidisk0';
 
            remove_btn.setDisabled(
-               rec.data.delete || rowdef.never_delete === true || (isUnusedDisk && !diskCap),
+               deleted ||
+               row.never_delete ||
+               (isCDRom && !cdromCap) ||
+               (isDisk && !diskCap),
            );
            remove_btn.setText(isUsedDisk && !isCloudInit ? remove_btn.altText : remove_btn.defaultText);
            remove_btn.RESTMethod = isUnusedDisk ? 'POST':'PUT';
 
-           edit_btn.setDisabled(rec.data.delete || !rowdef.editor || isCloudInit || (!isCDRom && !diskCap));
+           edit_btn.setDisabled(
+               deleted ||
+               !row.editor ||
+               isCloudInit ||
+               (isCDRom && !cdromCap) ||
+               (isDisk && !diskCap),
+           );
 
            resize_btn.setDisabled(pending || !isUsedDisk || !diskCap);
 
@@ -637,7 +645,7 @@ Ext.define('PVE.qemu.HardwareView', {
                            {
                                text: gettext('CD/DVD Drive'),
                                iconCls: 'pve-itype-icon-cdrom',
-                               disabled: !caps.vms['VM.Config.Disk'],
+                               disabled: !caps.vms['VM.Config.CDROM'],
                                handler: function() {
                                    let win = Ext.create('PVE.qemu.CDEdit', {
                                        url: '/api2/extjs/' + baseurl,