From a23cec1f94393eda1bc77ddb84feae7c94d923b7 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Wed, 1 Feb 2012 10:06:22 +0100 Subject: [PATCH] new helper functions --- PVE/RPCEnvironment.pm | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) 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) = @_; -- 2.39.2