]> git.proxmox.com Git - pve-access-control.git/blobdiff - src/PVE/API2/User.pm
api: users: code-style cleanup and sort when iterating users
[pve-access-control.git] / src / PVE / API2 / User.pm
index f1249a8cbdea650111906a8616bd3f8874334a5b..c6065964d46c1a242e3ae1b28804d4c54916e427 100644 (file)
@@ -2,15 +2,16 @@ package PVE::API2::User;
 
 use strict;
 use warnings;
+
 use PVE::Exception qw(raise raise_perm_exc raise_param_exc);
 use PVE::Cluster qw (cfs_read_file cfs_write_file);
 use PVE::Tools qw(split_list extract_param);
-use PVE::AccessControl;
 use PVE::JSONSchema qw(get_standard_option register_standard_option);
-use PVE::TokenConfig;
-
 use PVE::SafeSyslog;
 
+use PVE::AccessControl;
+use PVE::TokenConfig;
+
 use PVE::RESTHandler;
 
 use base qw(PVE::RESTHandler);
@@ -150,9 +151,10 @@ __PACKAGE__->register_method ({
                        tokenid => get_standard_option('token-subid'),
                    }),
                },
-               realmtype => {
-                   type => 'string',
+               'realm-type' => {
+                   type => 'string', format => 'pve-realm',
                    description => 'The type of the users realm',
+                   optional => 1, # it should always be there, but we use conditional code below, so..
                },
            },
        },
@@ -175,12 +177,12 @@ __PACKAGE__->register_method ({
        my $groups = $rpcenv->filter_groups($authuser, $privs, 1);
        my $allowed_users = $rpcenv->group_member_join([keys %$groups]);
 
-       foreach my $user (keys %{$usercfg->{users}}) {
+       foreach my $user (sort keys %{$usercfg->{users}}) {
            if (!($canUserMod || $user eq $authuser)) {
                next if !$allowed_users->{$user};
            }
 
-           my $entry = &$extract_user_data($usercfg->{users}->{$user}, $param->{full});
+           my $entry = $extract_user_data->($usercfg->{users}->{$user}, $param->{full});
 
            if (defined($param->{enabled})) {
                next if $entry->{enable} && !$param->{enabled};
@@ -188,16 +190,20 @@ __PACKAGE__->register_method ({
            }
 
            $entry->{groups} = join(',', @{$entry->{groups}}) if $entry->{groups};
-           $entry->{tokens} = [ map { { tokenid => $_, %{$entry->{tokens}->{$_}} } } sort keys %{$entry->{tokens}} ]
-               if defined($entry->{tokens});
 
-           my (undef, undef, $realm) = PVE::AccessControl::verify_username($user, 1);
+           if (defined(my $tokens = $entry->{tokens})) {
+               $entry->{tokens} = [
+                   map { { tokenid => $_, %{$tokens->{$_}} } } sort keys %$tokens
+               ];
+           }
 
-           if (defined($realm) && $domainids->{$realm}) {
-               $entry->{realmtype} = $domainids->{$realm}->{type};
+           my (undef, undef, $realm) = PVE::AccessControl::verify_username($user, 1);
+           if (defined($realm) && exists($domainids->{$realm})) {
+               $entry->{'realm-type'} = $domainids->{$realm}->{type};
            }
 
            $entry->{userid} = $user;
+
            push @$res, $entry;
        }