From: Dietmar Maurer Date: Wed, 1 Feb 2012 09:06:22 +0000 (+0100) Subject: new helper functions X-Git-Url: https://git.proxmox.com/?p=pve-access-control.git;a=commitdiff_plain;h=a23cec1f94393eda1bc77ddb84feae7c94d923b7 new helper functions --- diff --git a/PVE/RPCEnvironment.pm b/PVE/RPCEnvironment.pm index 06360f2..d382dcb 100644 --- a/PVE/RPCEnvironment.pm +++ b/PVE/RPCEnvironment.pm @@ -259,6 +259,41 @@ sub check_user_exist { return PVE::AccessControl::check_user_exist($cfg, $user, $noerr); } +sub check_pool_exist { + my ($self, $pool, $noerr) = @_; + + my $cfg = $self->{user_cfg}; + + return 1 if $cfg->{pools}->{$pool}; + + return undef if $noerr; + + raise_perm_exc("pool '$pool' does not exist"); +} + +sub check_vm_perm { + my ($self, $user, $vmid, $pool, $privs, $any, $noerr) = @_; + + my $cfg = $self->{user_cfg}; + + if ($pool) { + return if $self->check_full($user, "/pool/$pool", $privs, $any, 1); + } + return $self->check_full($user, "/vms/$vmid", $privs, $any, $noerr); +}; + +sub check_storage_perm { + my ($self, $user, $vmid, $pool, $storeid, $privs, $any, $noerr) = @_; + + my $cfg = $self->{user_cfg}; + + if ($pool && $cfg->{pools}->{$pool} && + $cfg->{pools}->{$pool}->{storage}->{$storeid}) { + return if $self->check_full($user, "/pool/$pool", $privs, $any, 1); + } + return $self->check_full($user, "/storage/$storeid", $privs, $any, $noerr); +}; + sub is_group_member { my ($self, $group, $user) = @_;