]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 808300: Requesting data for your own account using User.get should also returns...
authorKoosha Khajeh Moogahi <koosha.khajeh@gmail.com>
Thu, 8 Nov 2012 18:56:16 +0000 (19:56 +0100)
committerFrédéric Buclin <LpSolit@gmail.com>
Thu, 8 Nov 2012 18:56:16 +0000 (19:56 +0100)
r/a=LpSolit

Bugzilla/WebService/User.pm

index 2a62c3b5a873b0577298bd20713fe838fd6eb71e..be0de43eee9ab9cdb377b3b05a6f123d9df36549 100644 (file)
@@ -211,21 +211,27 @@ sub get {
             name      => $self->type('string', $user->login),
             email     => $self->type('string', $user->email),
             can_login => $self->type('boolean', $user->is_enabled ? 1 : 0),
-            groups    => $self->_filter_bless_groups($user->groups),
         };
-        
+
         if (Bugzilla->user->in_group('editusers')) {
             $user_info->{email_enabled}     = $self->type('boolean', $user->email_enabled);
             $user_info->{login_denied_text} = $self->type('string', $user->disabledtext);
         }
-        
+
         if (Bugzilla->user->id == $user->id) {
             $user_info->{saved_searches} = [map { $self->_query_to_hash($_) } @{ $user->queries }];
             $user_info->{saved_reports}  = [map { $self->_report_to_hash($_) } @{ $user->reports }];
         }
-        
+
+        if (Bugzilla->user->id == $user->id || Bugzilla->user->in_group('editusers')) {
+            $user_info->{groups} = [map {$self->_group_to_hash($_)} @{ $user->groups }];
+        }
+        else {
+            $user_info->{groups} = $self->_filter_bless_groups($user->groups);
+        }
+
         push(@users, filter($params, $user_info));
-}
+    }
 
     return { users => \@users };
 }
@@ -331,7 +337,7 @@ sub _filter_bless_groups {
 
     my @filtered_groups;
     foreach my $group (@$groups) {
-        next unless ($user->in_group('editusers') || $user->can_bless($group->id));
+        next unless $user->can_bless($group->id);
         push(@filtered_groups, $self->_group_to_hash($group));
     }
 
@@ -790,8 +796,11 @@ disabled/closed.
 
 =item groups
 
-C<array> An array of group hashes the user is a member of. Each hash describes
-the group and contains the following items:
+C<array> An array of group hashes the user is a member of. If the currently
+logged in user is querying his own account or is a member of the 'editusers'
+group, the array will contain all the groups that the user is a
+member of. Otherwise, the array will only contain groups that the logged in
+user can bless. Each hash describes the group and contains the following items:
 
 =over