This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag 
org.apache.sling.distribution.sample-0.1.4
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-sample.git

commit f2fa793e89b7aca9d2c7bfff161a0febd227fc4e
Author: Marius Petria <[email protected]>
AuthorDate: Mon Nov 9 13:41:52 2015 +0000

    SLING-5281: allow execution with calling user session
    
    git-svn-id: 
https://svn.apache.org/repos/asf/sling/trunk/contrib/extensions/distribution/sample@1713432
 13f79535-47bb-0310-9956-ffa450edef68
---
 .../org/apache/sling/distribution/test/Init.java   | 60 ++++++++++++++++------
 ...onAgentFactory-impersonate-publish-reverse.json | 17 ++++++
 ...tory-impersonate-publish-reverse-scheduled.json |  9 ++++
 ...stributionAgentFactory-impersonate-publish.json | 13 +++++
 ...stributionAgentFactory-impersonate-reverse.json | 13 +++++
 ...PackageExporterFactory-impersonate-reverse.json |  6 +++
 ...DistributionPackageExporterFactory-reverse.json |  0
 ...apperImpl.amended-distributionAgentService.json |  5 ++
 .../libs/sling/distribution/services.json          |  3 ++
 .../libs/sling/distribution/settings.json          |  3 ++
 10 files changed, 113 insertions(+), 16 deletions(-)

diff --git a/src/main/java/org/apache/sling/distribution/test/Init.java 
b/src/main/java/org/apache/sling/distribution/test/Init.java
index 409b3b2..9721595 100644
--- a/src/main/java/org/apache/sling/distribution/test/Init.java
+++ b/src/main/java/org/apache/sling/distribution/test/Init.java
@@ -25,8 +25,11 @@ import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.User;
 import org.apache.jackrabbit.api.security.user.UserManager;
 import javax.jcr.security.Privilege;
+
+import org.apache.jackrabbit.commons.JcrUtils;
 import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
 import org.apache.sling.jcr.api.SlingRepository;
 import org.slf4j.Logger;
@@ -48,41 +51,66 @@ public class Init {
     public void activate() throws Exception {
 
         try {
-            final String userName = "testDistributionUser";
+            final String defaultAgentUserName = "distribution-agent-user";
+            final String serviceUserName = "testDistributionUser";
+            final String distributorUserName = "testDistributorUser";
+
             Session session = slingRepository.loginAdministrative(null);
 
             JackrabbitSession jackrabittSession  = (JackrabbitSession) session;
             UserManager userManager = jackrabittSession.getUserManager();
-            Authorizable user = userManager.getAuthorizable(userName);
+            Authorizable serviceUser = 
userManager.getAuthorizable(serviceUserName);
 
-            if (user == null) {
+            if (serviceUser == null) {
                 try {
-                    user = userManager.createSystemUser(userName, null);
-                    log.error("created system user", user);
+                    serviceUser = 
userManager.createSystemUser(serviceUserName, null);
+                    log.info("created system user {}", serviceUserName);
 
                 } catch (Throwable t) {
-                    user = userManager.createUser(userName, "123");
-                    log.error("created regular user", user);
-
+                    serviceUser = userManager.createUser(serviceUserName, 
"123");
+                    log.info("created regular user {}", serviceUserName);
                 }
             }
 
-            if (user != null) {
-                AccessControlUtils.addAccessControlEntry(session, "/", 
user.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+            if (serviceUser != null) {
+                AccessControlUtils.addAccessControlEntry(session, 
"/var/sling/distribution/packages", serviceUser.getPrincipal(), new String[]{ 
Privilege.JCR_ALL }, true);
+                AccessControlUtils.addAccessControlEntry(session, "/content", 
serviceUser.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+                AccessControlUtils.addAccessControlEntry(session, null, 
serviceUser.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
 
-                AccessControlUtils.addAccessControlEntry(session, null, 
user.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+            }
 
-                session.save();
+            Authorizable distributorUser = 
userManager.getAuthorizable(distributorUserName);
 
-                session.logout();
+            if (distributorUser == null) {
+                distributorUser = userManager.createUser(distributorUserName, 
"123");
+                log.info("created regular user {}", distributorUserName);
             }
 
-        } catch (Throwable t) {
-            log.error("cannot create user", t);
-        }
+            JcrUtils.getOrCreateByPath("/content", "sling:Folder", session);
 
+            if (distributorUser != null) {
+                AccessControlUtils.addAccessControlEntry(session, 
"/var/sling/distribution/packages", distributorUser.getPrincipal(), new 
String[]{ Privilege.JCR_ALL }, true);
+                AccessControlUtils.addAccessControlEntry(session, "/content", 
distributorUser.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
+                AccessControlUtils.addAccessControlEntry(session, 
"/libs/sling/distribution", distributorUser.getPrincipal(), new String[]{ 
Privilege.JCR_ALL }, true);
 
+                AccessControlUtils.addAccessControlEntry(session, null, 
distributorUser.getPrincipal(), new String[]{ Privilege.JCR_ALL }, true);
 
+            }
+
+            Authorizable defaultAgentUser = 
userManager.getAuthorizable(defaultAgentUserName);
+
+            if (defaultAgentUser == null) {
+                defaultAgentUser = 
userManager.createUser(defaultAgentUserName, "123");
+                log.info("created regular user {}", defaultAgentUserName);
+                ((User) 
distributorUser).getImpersonation().grantImpersonation(defaultAgentUser.getPrincipal());
+                ((User) 
serviceUser).getImpersonation().grantImpersonation(defaultAgentUser.getPrincipal());
+            }
+
+            session.save();
+            session.logout();
+        } catch (Throwable t) {
+            log.error("cannot create user", t);
+        }
     }
 
 
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.agent.impl.ReverseDistributionAgentFactory-impersonate-publish-reverse.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.agent.impl.ReverseDistributionAgentFactory-impersonate-publish-reverse.json
new file mode 100644
index 0000000..2f63e6f
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.agent.impl.ReverseDistributionAgentFactory-impersonate-publish-reverse.json
@@ -0,0 +1,17 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+
+    "name": "impersonate-publish-reverse",
+
+    "requestAuthorizationStrategy.target" : "(name=privilegeRead)",
+
+    "packageBuilder.target": "(name=vlt)",
+
+    "transportSecretProvider.target" : "(name=publishAdmin)",
+
+    "packageExporter.endpoints": [
+        
"http://localhost:4503/libs/sling/distribution/services/exporters/impersonate-reverse";
+    ],
+
+    "triggers.target": "(name=impersonate-publish-reverse-scheduled)"
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.trigger.impl.ScheduledDistributionTriggerFactory-impersonate-publish-reverse-scheduled.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.trigger.impl.ScheduledDistributionTriggerFactory-impersonate-publish-reverse-scheduled.json
new file mode 100644
index 0000000..042b021
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish-reverse/org.apache.sling.distribution.trigger.impl.ScheduledDistributionTriggerFactory-impersonate-publish-reverse-scheduled.json
@@ -0,0 +1,9 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+
+    "name": "impersonate-publish-reverse-scheduled",
+    "action": "pull",
+    "seconds": "30",
+
+    "serviceName" : "distributionService"
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-impersonate-publish.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-impersonate-publish.json
new file mode 100644
index 0000000..cd4201f
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.author/impersonate-publish/org.apache.sling.distribution.agent.impl.ForwardDistributionAgentFactory-impersonate-publish.json
@@ -0,0 +1,13 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+
+    "name": "impersonate-publish",
+
+    "packageBuilder.target": "(name=vlt)",
+
+    "transportSecretProvider.target" : "(name=publishAdmin)",
+
+    "packageImporter.endpoints": [
+        
"http://localhost:4503/libs/sling/distribution/services/importers/default";
+    ]
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.agent.impl.QueueDistributionAgentFactory-impersonate-reverse.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.agent.impl.QueueDistributionAgentFactory-impersonate-reverse.json
new file mode 100644
index 0000000..07d266d
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.agent.impl.QueueDistributionAgentFactory-impersonate-reverse.json
@@ -0,0 +1,13 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "impersonate-reverse",
+
+    "serviceName" : "distributionService",
+
+    "requestAuthorizationStrategy.target" : "(name=privilegeRead)",
+
+    "packageBuilder.target" : "(name=vlt)",
+
+    "triggers.target": "(name=reverse-userGeneratedContent)"
+
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-impersonate-reverse.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-impersonate-reverse.json
new file mode 100644
index 0000000..478cc0e
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/impersonate-reverse/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-impersonate-reverse.json
@@ -0,0 +1,6 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "name": "impersonate-reverse",
+
+    "agent.target": "(name=impersonate-reverse)"
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-reverse.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/reverse/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-reverse.json
similarity index 100%
rename from 
src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-reverse.json
rename to 
src/main/resources/SLING-CONTENT/libs/sling/distribution/install.publish/reverse/org.apache.sling.distribution.packaging.impl.exporter.AgentDistributionPackageExporterFactory-reverse.json
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distributionAgentService.json
 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distributionAgentService.json
new file mode 100644
index 0000000..b03aab2
--- /dev/null
+++ 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/install/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-distributionAgentService.json
@@ -0,0 +1,5 @@
+{
+    "jcr:primaryType": "sling:OsgiConfig",
+    "user.default": "",
+    "user.mapping": 
"org.apache.sling.distribution.core:defaultAgentService=distribution-agent-user"
+}
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/services.json 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/services.json
new file mode 100644
index 0000000..68baa9c
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/distribution/services.json
@@ -0,0 +1,3 @@
+{
+  "jcr:primaryType": "sling:Folder"
+}
\ No newline at end of file
diff --git 
a/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.json 
b/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.json
new file mode 100644
index 0000000..68baa9c
--- /dev/null
+++ b/src/main/resources/SLING-CONTENT/libs/sling/distribution/settings.json
@@ -0,0 +1,3 @@
+{
+  "jcr:primaryType": "sling:Folder"
+}
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
"[email protected]" <[email protected]>.

Reply via email to