[Rt-commit] rt branch, 3.9-trunk, updated. rt-3.9.7-5-gd76fd32

Shawn Moore sartak at bestpractical.com
Tue Dec 7 19:27:56 EST 2010


The branch, 3.9-trunk has been updated
       via  d76fd32ba297e69c17f6c6e64c5e3f8f09acc35b (commit)
      from  50655b90dcbf435210cbd8beba4e038d5fac1fd2 (commit)

Summary of changes:
 lib/RT/Groups_Overlay.pm |   11 +++++++++--
 t/api/groups.t           |   16 +++++++---------
 2 files changed, 16 insertions(+), 11 deletions(-)

- Log -----------------------------------------------------------------
commit d76fd32ba297e69c17f6c6e64c5e3f8f09acc35b
Author: Shawn M Moore <sartak at bestpractical.com>
Date:   Tue Dec 7 18:48:45 2010 -0500

    Make ForWhichCurrentUserHasRight closer to right

diff --git a/lib/RT/Groups_Overlay.pm b/lib/RT/Groups_Overlay.pm
index ae6d392..238c348 100755
--- a/lib/RT/Groups_Overlay.pm
+++ b/lib/RT/Groups_Overlay.pm
@@ -342,12 +342,19 @@ sub ForWhichCurrentUserHasRight {
         @_,
     );
 
-    $self->WithMember(
+    my $member = $self->WithMember(
         PrincipalId => $self->CurrentUser->Id,
         Recursively => 1,
     );
 
-    $self->_JoinACL( %args );
+    my $acl = $self->_JoinACL( %args );
+
+    $self->Join(
+        ALIAS1 => $member,
+        FIELD1 => 'GroupId',
+        ALIAS2 => $acl,
+        FIELD2 => 'PrincipalId',
+    );
 
     return;
 }
diff --git a/t/api/groups.t b/t/api/groups.t
index 49f289d..e4044a4 100644
--- a/t/api/groups.t
+++ b/t/api/groups.t
@@ -167,20 +167,14 @@ is($groups->Count, 1, "RTxGroupRight found for RTxObj2");
         $groups->LimitToUserDefinedGroups;
         $groups->ForWhichCurrentUserHasRight(Right => 'RTxGroupRight');
 
-        TODO: {
-            local $TODO = "ForWhichCurrentUserHasRight still returns too many groups";
-            is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], [], 'no joined groups have RTxGroupRight yet');
-        }
+        is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], [], 'no joined groups have RTxGroupRight yet');
     }
 
     {
         my $groups = RT::Groups->new(RT::CurrentUser->new($herbert));
         $groups->LimitToUserDefinedGroups;
         $groups->ForWhichCurrentUserHasRight(Right => 'RTxGroupRight');
-        TODO: {
-            local $TODO = "ForWhichCurrentUserHasRight still returns too many groups";
-            is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], [], 'no joined groups have RTxGroupRight yet');
-        }
+        is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], [], 'no joined groups have RTxGroupRight yet');
     }
 
     ($ok, $msg) = $employees->PrincipalObj->GrantRight(Right => 'RTxGroupRight', Object => $employees);
@@ -197,7 +191,11 @@ is($groups->Count, 1, "RTxGroupRight found for RTxObj2");
         my $groups = RT::Groups->new(RT::CurrentUser->new($herbert));
         $groups->LimitToUserDefinedGroups;
         $groups->ForWhichCurrentUserHasRight(Right => 'RTxGroupRight');
-        is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], ['Employees', 'Hackers']);
+
+        TODO: {
+            local $TODO = "not recursing across groups within groups yet";
+            is_deeply([sort map { $_->Name } @{ $groups->ItemsArrayRef }], ['Employees', 'Hackers']);
+        }
     }
 }
 

-----------------------------------------------------------------------


More information about the Rt-commit mailing list