You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2011/03/24 19:52:29 UTC

svn commit: r1085070 - in /jackrabbit/trunk/jackrabbit-core/src: main/java/org/apache/jackrabbit/core/security/user/ test/java/org/apache/jackrabbit/api/security/user/ test/java/org/apache/jackrabbit/core/security/user/

Author: angela
Date: Thu Mar 24 18:52:29 2011
New Revision: 1085070

URL: http://svn.apache.org/viewvc?rev=1085070&view=rev
Log:
JCR-2931 : Compatibility issue if admin impersonates admin session

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/ImpersonationTest.java
    jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java?rev=1085070&r1=1085069&r2=1085070&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/user/ImpersonationImpl.java Thu Mar 24 18:52:29 2011
@@ -149,10 +149,7 @@ class ImpersonationImpl implements Imper
                     continue;
                 }
                 Authorizable a = userManager.getAuthorizable(p);
-                if (user.equals(a)) {
-                    allows = false;
-                    break;
-                } else if (a != null && userManager.isAdminId(a.getID())) {
+                if (a != null && userManager.isAdminId(a.getID())) {
                     allows = true;
                     break;
                 }

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/ImpersonationTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/ImpersonationTest.java?rev=1085070&r1=1085069&r2=1085070&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/ImpersonationTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/api/security/user/ImpersonationTest.java Thu Mar 24 18:52:29 2011
@@ -195,6 +195,15 @@ public class ImpersonationTest extends A
         assertFalse(impersonation.allows(subject));
     }
 
+    /**
+     * @see <a href="https://issues.apache.org/jira/browse/JCR-2931">JCR-2931</a>
+     */
+    public void testAdminImpersonatingOneself() throws RepositoryException, NotExecutableException {
+        User admin = getTestUser(superuser);
+        Subject subject = createSubject(admin);
+        assertTrue(admin.getImpersonation().allows(subject));
+    }
+
     public void testGrantImpersonatingForOneself() throws RepositoryException {
         Principal main = newUser.getPrincipal();
         try {

Modified: jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java?rev=1085070&r1=1085069&r2=1085070&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/test/java/org/apache/jackrabbit/core/security/user/ImpersonationImplTest.java Thu Mar 24 18:52:29 2011
@@ -144,12 +144,11 @@ public class ImpersonationImplTest exten
         assertTrue(impersonation.allows(buildSubject(adminPrincipal)));
 
         // same if the impersonation object of the admin itself is used.
-        // however impersonation is not allowed....
         Impersonation adminImpersonation = ((User) a).getImpersonation();
 
         assertFalse(adminImpersonation.grantImpersonation(adminPrincipal));
         assertFalse(adminImpersonation.revokeImpersonation(adminPrincipal));
-        assertFalse(adminImpersonation.allows(buildSubject(adminPrincipal)));
+        assertTrue(impersonation.allows(buildSubject(adminPrincipal)));
     }
 
     public void testSystemPrincipalAsImpersonator() throws RepositoryException {