Die with a helpful error message instead of silently ignoring the user
when trying to delete a special role.
---
 PVE/API2/Role.pm     | 3 +++
 PVE/AccessControl.pm | 1 +
 2 files changed, 4 insertions(+)

diff --git a/PVE/API2/Role.pm b/PVE/API2/Role.pm
index 6392e13..d8d8e17 100644
--- a/PVE/API2/Role.pm
+++ b/PVE/API2/Role.pm
@@ -192,6 +192,9 @@ __PACKAGE__->register_method ({
 
                my $usercfg = cfs_read_file("user.cfg");
 
+               die "role '$role' can not be deleted\n"
+                   if ($usercfg->{roles}->{$role}->{special});
+
                die "role '$role' does not exist\n"
                    if !$usercfg->{roles}->{$role};
        
diff --git a/PVE/AccessControl.pm b/PVE/AccessControl.pm
index 7d02cdf..b6be95d 100644
--- a/PVE/AccessControl.pm
+++ b/PVE/AccessControl.pm
@@ -595,6 +595,7 @@ sub userconfig_force_defaults {
 
     foreach my $r (keys %$special_roles) {
        $cfg->{roles}->{$r} = $special_roles->{$r};
+       $cfg->{roles}->{$r}->{special} = 1;
     }
 
     # add root user if not exists
-- 
2.11.0


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

Reply via email to