rename user_enabled to check_user_enabled
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 19 Jan 2012 05:49:02 +0000 (06:49 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 19 Jan 2012 05:55:53 +0000 (06:55 +0100)
And add $noerr parameter.

PVE/API2/AccessControl.pm
PVE/AccessControl.pm
PVE/RPCEnvironment.pm

index 916b167..5967c50 100644 (file)
@@ -140,6 +140,9 @@ __PACKAGE__->register_method ({
        my $token;
        eval {
 
+           # test if user exists and is enabled
+           $rpcenv->check_user_enabled($username);
+
            if ($param->{path} && $param->{privs}) {
                my $privs = [ PVE::Tools::split_list($param->{privs}) ];
                my $path = PVE::AccessControl::normalize_path($param->{path});
@@ -154,9 +157,6 @@ __PACKAGE__->register_method ({
                # got valid ticket
                # Note: root@pam can create tickets for other users
                
-               # test if user exists and is enabled
-               my $usercfg = cfs_read_file('user.cfg');
-               die "no such user ('$username')\n" if !user_enabled($usercfg, $username);
            } else {
                $username = PVE::AccessControl::authenticate_user($username, $param->{password});
            }
index 9396537..b06ca3b 100644 (file)
@@ -323,10 +323,10 @@ sub authenticate_user_domain {
     }
 }
 
-sub user_enabled {
-    my ($usercfg, $username) = @_;
+sub check_user_enabled {
+    my ($usercfg, $username, $noerr) = @_;
 
-    $username = verify_username($username, 1);
+    $username = verify_username($username, $noerr);
     return undef if !$username;
  
     return 1 if $usercfg && $usercfg->{users}->{$username} &&
@@ -334,7 +334,9 @@ sub user_enabled {
 
     return 1 if $username eq 'root@pam'; # root is always enabled
 
-    return 0;
+    die "no such user ('$username')\n" if !$noerr;
+    return undef;
 }
 
 # password should be utf8 encoded
@@ -349,9 +351,10 @@ sub authenticate_user {
 
     my $usercfg = cfs_read_file('user.cfg');
 
-    if (!user_enabled($usercfg, $username)) {
+    eval { check_user_enabled($usercfg, $username); };
+    if (my $err = $@) {
        sleep(2);
-       die "no such user ('$username')\n";
+       die $err;
     }
 
     my $ctime = time();
index f65a776..19276ba 100644 (file)
@@ -165,11 +165,11 @@ sub check {
     return 1;
 };
 
-sub user_enabled {
-    my ($self, $user) = @_;
+sub check_user_enabled {
+    my ($self, $user, $noerr) = @_;
     
     my $cfg = $self->{user_cfg};
-    return PVE::AccessControl::user_enabled($cfg, $user);
+    return PVE::AccessControl::check_user_enabled($cfg, $user, $noerr);
 }
 
 # initialize environment - must be called once at program startup