]> git.proxmox.com Git - pmg-api.git/blobdiff - PMG/API2/AccessControl.pm
correctly use PMG::RESTEnvironment->get()
[pmg-api.git] / PMG / API2 / AccessControl.pm
index 0184685ec3af141fc5a658089957a3b6569d1768..0f583fe8900522b6bacdef9d564f641cfd9929f0 100644 (file)
@@ -5,7 +5,7 @@ use warnings;
 
 use PVE::Exception qw(raise raise_perm_exc);
 use PVE::SafeSyslog;
-use PVE::RESTEnvironment;
+use PMG::RESTEnvironment;
 use PVE::RESTHandler;
 use PVE::JSONSchema qw(get_standard_option);
 
@@ -131,6 +131,7 @@ __PACKAGE__->register_method ({
            username => { type => 'string' },
            ticket => { type => 'string', optional => 1},
            CSRFPreventionToken => { type => 'string', optional => 1 },
+           role => { type => 'string', optional => 1},
        }
     },
     code => sub {
@@ -139,12 +140,13 @@ __PACKAGE__->register_method ({
        my $username = $param->{username};
        $username .= "\@$param->{realm}" if $param->{realm};
 
-       my $rpcenv = PVE::RESTEnvironment::get();
+       my $rpcenv = PMG::RESTEnvironment->get();
 
        my $res;
        eval {
-           PMG::AccessControl::check_user_enabled($username);
+           my $role = PMG::AccessControl::check_user_enabled($username);
            $res = &$create_ticket($rpcenv, $username, $param->{password}, $param->{otp});
+           $res->{role} = $role;
        };
        if (my $err = $@) {
            my $clientip = $rpcenv->get_client_ip() || '';
@@ -163,6 +165,10 @@ __PACKAGE__->register_method ({
     path => 'password', 
     method => 'PUT',
     protected => 1, # else we can't access shadow files
+    permissions => {
+       description => "Each user is allowed to change his own password. Only root can change the password of another user.",
+       user => 'all',
+    },
     description => "Change user password.",
     parameters => {
        additionalProperties => 0,
@@ -180,7 +186,7 @@ __PACKAGE__->register_method ({
     code => sub {
        my ($param) = @_;
 
-       my $rpcenv = PVE::RESTEnvironment::get();
+       my $rpcenv = PMG::RESTEnvironment->get();
        my $authuser = $rpcenv->get_user();
 
        my ($userid, $ruid, $realm) = PMG::Utils::verify_username($param->{userid});