diff options
author | Ivan Kohler <ivan@freeside.biz> | 2015-06-12 15:19:00 -0700 |
---|---|---|
committer | Ivan Kohler <ivan@freeside.biz> | 2015-07-09 17:56:53 -0700 |
commit | 31f3763747b82764bb019cfab5b2a2945fc9a99d (patch) | |
tree | 36715bb96a8f9c02eb41f5fdab4a0b181b2d2e3a /rt/lib/RT/Groups.pm | |
parent | 5e9677cbad2051ea452b389fa03bddf37166c590 (diff) |
rt 4.0.23
Diffstat (limited to 'rt/lib/RT/Groups.pm')
-rwxr-xr-x | rt/lib/RT/Groups.pm | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/rt/lib/RT/Groups.pm b/rt/lib/RT/Groups.pm index c2348584e..576c99dc9 100755 --- a/rt/lib/RT/Groups.pm +++ b/rt/lib/RT/Groups.pm @@ -2,7 +2,7 @@ # # COPYRIGHT: # -# This software is Copyright (c) 1996-2014 Best Practical Solutions, LLC +# This software is Copyright (c) 1996-2015 Best Practical Solutions, LLC # <sales@bestpractical.com> # # (Except where explicitly superseded by other copyright notices) @@ -240,6 +240,15 @@ sub WithMember { return $members; } +sub WithCurrentUser { + my $self = shift; + $self->{with_current_user} = 1; + return $self->WithMember( + PrincipalId => $self->CurrentUser->PrincipalId, + Recursively => 1, + ); +} + sub WithoutMember { my $self = shift; my %args = ( @@ -427,22 +436,16 @@ sub LimitToDeleted { -sub Next { +sub AddRecord { my $self = shift; + my ($record) = @_; - # Don't show groups which the user isn't allowed to see. + # If we've explicitly limited to groups the user is a member of (for + # dashboard or savedsearch privacy objects), skip the ACL. + return unless $self->{with_current_user} + or $record->CurrentUserHasRight('SeeGroup'); - my $Group = $self->SUPER::Next(); - if ((defined($Group)) and (ref($Group))) { - unless ($Group->CurrentUserHasRight('SeeGroup')) { - return $self->Next(); - } - - return $Group; - } - else { - return undef; - } + return $self->SUPER::AddRecord( $record ); } |