Commit 5653412e authored by Dave Lawrence's avatar Dave Lawrence

Bug 709944 - Expose groups of which a user is part

r=glob, a=LpSolit
parent 8e5311bf
...@@ -188,17 +188,17 @@ sub get { ...@@ -188,17 +188,17 @@ sub get {
my $in_group = $self->_filter_users_by_group( my $in_group = $self->_filter_users_by_group(
\@user_objects, $params); \@user_objects, $params);
if (Bugzilla->user->in_group('editusers')) { if (Bugzilla->user->in_group('editusers')) {
@users = @users =
map {filter $params, { map {filter $params, {
id => $self->type('int', $_->id), id => $self->type('int', $_->id),
real_name => $self->type('string', $_->name), real_name => $self->type('string', $_->name),
name => $self->type('string', $_->login), name => $self->type('string', $_->login),
email => $self->type('string', $_->email), email => $self->type('string', $_->email),
can_login => $self->type('boolean', $_->is_enabled ? 1 : 0), can_login => $self->type('boolean', $_->is_enabled ? 1 : 0),
groups => $self->_filter_bless_groups($_->groups),
email_enabled => $self->type('boolean', $_->email_enabled), email_enabled => $self->type('boolean', $_->email_enabled),
login_denied_text => $self->type('string', $_->disabledtext), login_denied_text => $self->type('string', $_->disabledtext),
}} @$in_group; }} @$in_group;
} }
else { else {
@users = @users =
...@@ -208,6 +208,7 @@ sub get { ...@@ -208,6 +208,7 @@ sub get {
name => $self->type('string', $_->login), name => $self->type('string', $_->login),
email => $self->type('string', $_->email), email => $self->type('string', $_->email),
can_login => $self->type('boolean', $_->is_enabled ? 1 : 0), can_login => $self->type('boolean', $_->is_enabled ? 1 : 0),
groups => $self->_filter_bless_groups($_->groups),
}} @$in_group; }} @$in_group;
} }
...@@ -241,6 +242,29 @@ sub _user_in_any_group { ...@@ -241,6 +242,29 @@ sub _user_in_any_group {
return 0; return 0;
} }
sub _filter_bless_groups {
my ($self, $groups) = @_;
my $user = Bugzilla->user;
my @filtered_groups;
foreach my $group (@$groups) {
next unless ($user->in_group('editusers') || $user->can_bless($group->id));
push(@filtered_groups, $self->_group_to_hash($group));
}
return \@filtered_groups;
}
sub _group_to_hash {
my ($self, $group) = @_;
my $item = {
id => $self->type('int', $group->id),
name => $self->type('string', $group->name),
description => $self->type('string', $group->description),
};
return $item;
}
1; 1;
__END__ __END__
...@@ -563,10 +587,32 @@ C<string> A text field that holds the reason for disabling a user from logging ...@@ -563,10 +587,32 @@ C<string> A text field that holds the reason for disabling a user from logging
into bugzilla, if empty then the user account is enabled. Otherwise it is into bugzilla, if empty then the user account is enabled. Otherwise it is
disabled/closed. 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:
=over
=item id
C<int> The group id
=item name
C<string> The name of the group
=item description
C<string> The description for the group
=back
B<Note>: If you are not logged in to Bugzilla when you call this function, you B<Note>: If you are not logged in to Bugzilla when you call this function, you
will only be returned the C<id>, C<name>, and C<real_name> items. If you are will only be returned the C<id>, C<name>, and C<real_name> items. If you are
logged in and not in editusers group, you will only be returned the C<id>, C<name>, logged in and not in editusers group, you will only be returned the C<id>, C<name>,
C<real_name>, C<email>, and C<can_login> items. C<real_name>, C<email>, and C<can_login> items. The groups returned are filtered
based on your permission to bless each group.
=back =back
...@@ -602,6 +648,8 @@ function. ...@@ -602,6 +648,8 @@ function.
=item C<include_disabled> added in Bugzilla B<4.0>. Default behavior =item C<include_disabled> added in Bugzilla B<4.0>. Default behavior
for C<match> has changed to only returning enabled accounts. for C<match> has changed to only returning enabled accounts.
=item C<groups> Added in Bugzilla B<4.4>.
=back =back
=back =back
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment