You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2009/06/25 09:48:57 UTC

svn commit: r788282 - in /sling/trunk/bundles/servlets/resolver/src/main: java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java resources/OSGI-INF/metatype/metatype.properties

Author: cziegeler
Date: Thu Jun 25 07:48:56 2009
New Revision: 788282

URL: http://svn.apache.org/viewvc?rev=788282&view=rev
Log:
SLING-1022 : Provide configuration property to specify special script user.

Modified:
    sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
    sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties

Modified: sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java?rev=788282&r1=788281&r2=788282&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/java/org/apache/sling/servlets/resolver/internal/SlingServletResolver.java Thu Jun 25 07:48:56 2009
@@ -33,8 +33,10 @@
 import java.util.List;
 import java.util.Map;
 
+import javax.jcr.Credentials;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 import javax.servlet.Servlet;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
@@ -54,6 +56,7 @@
 import org.apache.sling.api.scripting.SlingScriptResolver;
 import org.apache.sling.api.servlets.OptingServlet;
 import org.apache.sling.api.servlets.ServletResolver;
+import org.apache.sling.commons.osgi.OsgiUtil;
 import org.apache.sling.engine.RequestUtil;
 import org.apache.sling.engine.servlets.AbstractServiceReferenceConfig;
 import org.apache.sling.engine.servlets.ErrorHandler;
@@ -101,6 +104,11 @@
      */
     public static final String PROP_SERVLET_ROOT = "servletresolver.servletRoot";
 
+    /**
+     * @scr.property
+     */
+    public static final String PROP_SCRIPT_USER = "servletresolver.scriptUser";
+
     /** The default servlet root is the first search path (which is usally /apps) */
     public static final String DEFAULT_SERVLET_ROOT = "0";
 
@@ -549,6 +557,16 @@
         } catch (RepositoryException e) {
             throw new SlingException("Unable to create new admin session.", e);
         }
+        // if a script user is configured we use this user to read the scripts
+        final String scriptUser = OsgiUtil.toString(properties.get(PROP_SCRIPT_USER), null);
+        if ( scriptUser != null && scriptUser.length() > 0 ) {
+            Credentials creds = new SimpleCredentials(scriptUser, new char[0]);
+            try {
+                this.scriptSession = this.scriptSession.impersonate(creds);
+            } catch (RepositoryException e) {
+                throw new SlingException("Unable to impersonate to script user: " + scriptUser, e);
+            }
+        }
         this.scriptResolver = this.resourceResolverFactory.getResourceResolver(this.scriptSession);
 
         Collection<ServiceReference> refs;

Modified: sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=788282&r1=788281&r2=788282&view=diff
==============================================================================
--- sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ sling/trunk/bundles/servlets/resolver/src/main/resources/OSGI-INF/metatype/metatype.properties Thu Jun 25 07:48:56 2009
@@ -38,3 +38,9 @@
  path. The default value is "/apps". This path should be part of the search \
  path configured in the Resource Resolver Factory otherwise a thus registered \
  servlet may not be found.
+
+servletresolver.scriptUser.name = Script User
+servletresolver.scriptUser.description = This optional property can specify \
+ the repository user who is used to read the scripts. If none is specified \
+ the admin user is used by default.
+ 
\ No newline at end of file