incubator-sling-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From asa...@apache.org
Subject svn commit: r1600814 - in /sling/trunk/bundles: engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
Date Fri, 06 Jun 2014 06:51:46 GMT
Author: asanso
Date: Fri Jun  6 06:51:46 2014
New Revision: 1600814

URL: http://svn.apache.org/r1600814
Log:
SLING-3633 - Sling uses wrong value for Principal object

Modified:
    sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
    sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java

Modified: sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java?rev=1600814&r1=1600813&r2=1600814&view=diff
==============================================================================
--- sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
(original)
+++ sling/trunk/bundles/engine/src/main/java/org/apache/sling/engine/impl/SlingHttpServletRequestImpl.java
Fri Jun  6 06:51:46 2014
@@ -280,6 +280,11 @@ public class SlingHttpServletRequestImpl
      */
     @Override
     public Principal getUserPrincipal() {
+        Principal principal = getResourceResolver().adaptTo(Principal.class);
+        if (principal != null) {
+            return principal;
+        }
+        //fallback to the userid
         String remoteUser = getRemoteUser();
         return (remoteUser != null) ? new UserPrincipal(remoteUser) : null;
     }

Modified: sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java?rev=1600814&r1=1600813&r2=1600814&view=diff
==============================================================================
--- sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
(original)
+++ sling/trunk/bundles/jcr/resource/src/main/java/org/apache/sling/jcr/resource/internal/helper/jcr/JcrResourceProvider.java
Fri Jun  6 06:51:46 2014
@@ -18,6 +18,7 @@
  */
 package org.apache.sling.jcr.resource.internal.helper.jcr;
 
+import java.security.Principal;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -37,6 +38,9 @@ import javax.jcr.query.Row;
 import javax.jcr.query.RowIterator;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.sling.api.SlingException;
 import org.apache.sling.api.adapter.SlingAdaptable;
 import org.apache.sling.api.resource.AttributableResourceProvider;
@@ -386,6 +390,22 @@ public class JcrResourceProvider
     public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) {
         if (type == Session.class) {
             return (AdapterType) session;
+        } else if (type == Principal.class) {       
+            try {
+                if (this.session instanceof JackrabbitSession){
+                    JackrabbitSession s =((JackrabbitSession) this.session);
+                    final UserManager um = s.getUserManager();
+                    if (um != null) {
+                        final Authorizable auth = um.getAuthorizable(s.getUserID());
+                        if (auth != null) {
+                            return (AdapterType) auth.getPrincipal();
+                        }
+                    }
+                }
+                log.debug("not able to adapto Resource to Principal, let the base class try
to adapt");
+            } catch (RepositoryException e) {
+                log.warn("error while adapting Resource to Principal, let the base class
try to adapt", e);
+            }
         }
         return super.adaptTo(type);
     }



Mime
View raw message