otherwise we need 1+N API calls to retrieve the full user+token picture

Signed-off-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
---

Notes:
    new in v2

 PVE/API2/User.pm | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/PVE/API2/User.pm b/PVE/API2/User.pm
index fb985dd..0fc88ad 100644
--- a/PVE/API2/User.pm
+++ b/PVE/API2/User.pm
@@ -119,6 +119,12 @@ __PACKAGE__->register_method ({
                type => 'boolean',
                description => "Optional filter for enable property.",
                optional => 1,
+           },
+           full => {
+               type => 'boolean',
+               description => "Include group and token information.",
+               optional => 1,
+               default => 0,
            }
        },
     },
@@ -135,6 +141,14 @@ __PACKAGE__->register_method ({
                email => get_standard_option('user-email'),
                comment => get_standard_option('user-comment'),
                keys => get_standard_option('user-keys'),
+               groups => get_standard_option('group-list'),
+               tokens => {
+                   type => 'array',
+                   optional => 1,
+                   items => $token_info_extend->({
+                       tokenid => get_standard_option('token-subid'),
+                   }),
+               }
            },
        },
        links => [ { rel => 'child', href => "{userid}" } ],
@@ -154,18 +168,21 @@ __PACKAGE__->register_method ({
        my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
 
        foreach my $user (keys %{$usercfg->{users}}) {
-
            if (!($canUserMod || $user eq $authuser)) {
                next if !$allowed_users->{$user};
            }
 
-           my $entry = &$extract_user_data($usercfg->{users}->{$user});
+           my $entry = &$extract_user_data($usercfg->{users}->{$user}, 
$param->{full});
 
            if (defined($param->{enabled})) {
                next if $entry->{enable} && !$param->{enabled};
                next if !$entry->{enable} && $param->{enabled};
            }
 
+           $entry->{groups} = join(',', @{$entry->{groups}}) if 
$entry->{groups};
+           $entry->{tokens} = [ map { { tokenid => $_, 
%{$entry->{tokens}->{$_}} } } sort keys %{$entry->{tokens}} ]
+               if defined($entry->{tokens});
+
            $entry->{userid} = $user;
            push @$res, $entry;
        }
-- 
2.20.1


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to