From a901f94a2cf50ed2c6371e72b3273b42074eae80 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabian=20Gr=C3=BCnbichler?= Date: Tue, 21 Jan 2020 13:54:24 +0100 Subject: [PATCH] api/tasks: attribute token tasks to user MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit and store token ID in separate, currently unused member. Signed-off-by: Fabian Grünbichler --- PVE/API2/Cluster.pm | 3 +++ PVE/API2/Tasks.pm | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/PVE/API2/Cluster.pm b/PVE/API2/Cluster.pm index 8c8060b3..c802d440 100644 --- a/PVE/API2/Cluster.pm +++ b/PVE/API2/Cluster.pm @@ -461,6 +461,9 @@ __PACKAGE__->register_method({ my $all = $rpcenv->check($authuser, "/", [ 'Sys.Audit' ], 1); foreach my $task (@$tlist) { + if (PVE::AccessControl::pve_verify_tokenid($task->{user}, 1)) { + ($task->{user}, $task->{tokenid}) = PVE::AccessControl::split_tokenid($task->{user}); + } push @$res, $task if $all || ($task->{user} eq $authuser); } diff --git a/PVE/API2/Tasks.pm b/PVE/API2/Tasks.pm index 73e398eb..5dc6a4ad 100644 --- a/PVE/API2/Tasks.pm +++ b/PVE/API2/Tasks.pm @@ -16,6 +16,14 @@ use PVE::AccessControl; use base qw(PVE::RESTHandler); +my $convert_token_task = sub { + my ($task) = @_; + + if (PVE::AccessControl::pve_verify_tokenid($task->{user}, 1)) { + ($task->{user}, $task->{tokenid}) = PVE::AccessControl::split_tokenid($task->{user}); + } +}; + __PACKAGE__->register_method({ name => 'node_tasks', path => '', @@ -142,6 +150,7 @@ __PACKAGE__->register_method({ $task->{endtime} = hex($endtime) if $endtime; $task->{status} = $status if $status; + $convert_token_task->($task); if (!$filter_task->($task)) { push @$res, $task; $limit--; @@ -242,6 +251,8 @@ __PACKAGE__->register_method({ my $user = $rpcenv->get_user(); my $node = $param->{node}; + $convert_token_task->($task); + if ($user ne $task->{user}) { $rpcenv->check($user, "/nodes/$node", [ 'Sys.Modify' ]); } @@ -309,6 +320,8 @@ __PACKAGE__->register_method({ my $start = $param->{start} // 0; my $limit = $param->{limit} // 50; + $convert_token_task->($task); + if ($user ne $task->{user}) { $rpcenv->check($user, "/nodes/$node", [ 'Sys.Audit' ]); } @@ -365,6 +378,8 @@ __PACKAGE__->register_method({ my $user = $rpcenv->get_user(); my $node = $param->{node}; + $convert_token_task->($task); + if ($user ne $task->{user}) { $rpcenv->check($user, "/nodes/$node", [ 'Sys.Audit' ]); } -- 2.39.5