[pve-devel] [PATCH v3 access-control 09/20] API: add group and token info to user index
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Jan 21 13:54:07 CET 2020
otherwise we need 1+N API calls to retrieve the full user+token picture
Signed-off-by: Fabian Grünbichler <f.gruenbichler at 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
More information about the pve-devel
mailing list