diff options
Diffstat (limited to 'rt/share/html/REST/1.0/Forms/user')
-rwxr-xr-x | rt/share/html/REST/1.0/Forms/user/default | 49 | ||||
-rwxr-xr-x | rt/share/html/REST/1.0/Forms/user/ns | 2 |
2 files changed, 39 insertions, 12 deletions
diff --git a/rt/share/html/REST/1.0/Forms/user/default b/rt/share/html/REST/1.0/Forms/user/default index 227fc8133..53d0e28ae 100755 --- a/rt/share/html/REST/1.0/Forms/user/default +++ b/rt/share/html/REST/1.0/Forms/user/default @@ -51,17 +51,25 @@ $id $format => 's' $changes => {} +$fields => undef </%ARGS> <%perl> my @comments; my ($c, $o, $k, $e) = ("", [], {}, 0); my %data = %$changes; my $user = RT::User->new($session{CurrentUser}); -my @fields = qw(RealName NickName Gecos Organization Address1 Address2 City - State Zip Country HomePhone WorkPhone MobilePhone PagerPhone - FreeformContactInfo Comments Signature Lang EmailEncoding - WebEncoding ExternalContactInfoId ContactInfoSystem - ExternalAuthId AuthSystem Privileged Disabled); + +my @fields = + qw(Name EmailAddress RealName NickName Gecos Organization Address1 + Address2 City State Zip Country HomePhone WorkPhone MobilePhone PagerPhone + FreeformContactInfo Comments Signature Lang EmailEncoding + WebEncoding ExternalContactInfoId ContactInfoSystem + ExternalAuthId AuthSystem Privileged Disabled); + +if ( $fields && %$fields ) { + @fields = grep { exists $fields->{ lc $_ } } @fields; +} + my %fields = map { lc $_ => $_ } @fields; if ($id ne 'new') { @@ -117,19 +125,38 @@ if (keys %data == 0) { my @data; push @data, [ id => "user/".$user->Id ]; - push @data, [ Name => $user->Name ]; - push @data, [ Password => '********' ]; - push @data, [ EmailAddress => $user->EmailAddress ]; - foreach my $key (@fields) { - my $val = $user->$key; + unless ( $fields && %$fields && !exists $fields->{'password'} ) { + push @data, [ Password => '********' ]; + } - if ( (defined ($format) && $format eq 'l') || (defined $val && $val ne '')) { + for my $key (@fields) { + my $val = $user->$key; + if ( ( $fields && exists $fields->{ lc $key } ) + || ( defined $format && $format eq 'l' ) + || ( defined $val && $val ne '' ) ) + { $key = "ContactInfo" if $key eq 'FreeformContactInfo'; push @data, [ $key => $val ]; } } + # Custom fields + my $CustomFields = $user->CustomFields; + while ( my $CustomField = $CustomFields->Next() ) { + # show cf unless there are specified fields that don't include it + next + unless ( !%$fields + || exists $fields->{ lc "CF-" . $CustomField->Name } ); + next unless $CustomField->CurrentUserHasRight('SeeCustomField'); + my $CFvalues = $user->CustomFieldValues( $CustomField->Id ); + my @CFvalues; + while ( my $CFvalue = $CFvalues->Next() ) { + push @CFvalues, $CFvalue->Content; + } + push @data, [ "CF-" . $CustomField->Name => \@CFvalues ]; + } + my %k = map {@$_} @data; $o = [ map {$_->[0]} @data ]; $k = \%k; diff --git a/rt/share/html/REST/1.0/Forms/user/ns b/rt/share/html/REST/1.0/Forms/user/ns index 4c459b4a2..76f446e90 100755 --- a/rt/share/html/REST/1.0/Forms/user/ns +++ b/rt/share/html/REST/1.0/Forms/user/ns @@ -57,7 +57,7 @@ my $field = "Name"; $field = "EmailAddress" if $id =~ /\@/; my $users = RT::Users->new($session{CurrentUser}); -$users->Limit(FIELD => $field, OPERATOR => '=', VALUE => $id); +$users->Limit(FIELD => $field, OPERATOR => '=', VALUE => $id, CASESENSITIVE => 0); if ($users->Count == 0) { return (0, "No user named $id exists."); } |