You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:48:16 UTC
[sling-org-apache-sling-jcr-jackrabbit-usermanager] 16/28:
SLING-1016: Make membership management depend on the principal name not the
URI of the principal, since the principal name is already unique.
https://issues.apache.org/jira/browse/SLING-1016 Patch provided by Ian
Boston.
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jcr.jackrabbit.usermanager-2.0.4
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jcr-jackrabbit-usermanager.git
commit 8048a2b2f61f3f31c44591d78f3592539b762e5c
Author: Juan Vazquez <jv...@apache.org>
AuthorDate: Mon Jun 22 12:10:43 2009 +0000
SLING-1016: Make membership management depend on the principal name not the URI of the principal, since the principal name is already unique.
https://issues.apache.org/jira/browse/SLING-1016
Patch provided by Ian Boston.
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/jackrabbit-usermanager@787214 13f79535-47bb-0310-9956-ffa450edef68
---
.../impl/post/AbstractGroupPostServlet.java | 52 ++++++++++++++++------
1 file changed, 38 insertions(+), 14 deletions(-)
diff --git a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractGroupPostServlet.java b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractGroupPostServlet.java
index d70cb24..57b9dc3 100644
--- a/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractGroupPostServlet.java
+++ b/src/main/java/org/apache/sling/jackrabbit/usermanager/impl/post/AbstractGroupPostServlet.java
@@ -19,13 +19,16 @@ package org.apache.sling.jackrabbit.usermanager.impl.post;
import java.util.List;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import org.apache.jackrabbit.api.security.user.Authorizable;
import org.apache.jackrabbit.api.security.user.Group;
+import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.jackrabbit.usermanager.impl.resource.AuthorizableResourceProvider;
+import org.apache.sling.jcr.base.util.AccessControlUtil;
import org.apache.sling.servlets.post.Modification;
import org.apache.sling.servlets.post.SlingPostConstants;
@@ -56,19 +59,19 @@ public abstract class AbstractGroupPostServlet extends
ResourceResolver resolver = request.getResourceResolver();
Resource baseResource = request.getResource();
boolean changed = false;
+
+ UserManager userManager = AccessControlUtil.getUserManager(resolver.adaptTo(Session.class));
// first remove any members posted as ":member@Delete"
String[] membersToDelete = request.getParameterValues(SlingPostConstants.RP_PREFIX
+ "member" + SlingPostConstants.SUFFIX_DELETE);
if (membersToDelete != null) {
for (String member : membersToDelete) {
- Resource res = resolver.getResource(baseResource, member);
- if (res != null) {
- Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
- if (memberAuthorizable != null) {
- group.removeMember(memberAuthorizable);
- changed = true;
- }
+
+ Authorizable memberAuthorizable = getAuthorizable(baseResource, member,userManager,resolver);
+ if (memberAuthorizable != null) {
+ group.removeMember(memberAuthorizable);
+ changed = true;
}
}
@@ -79,13 +82,10 @@ public abstract class AbstractGroupPostServlet extends
+ "member");
if (membersToAdd != null) {
for (String member : membersToAdd) {
- Resource res = resolver.getResource(baseResource, member);
- if (res != null) {
- Authorizable memberAuthorizable = res.adaptTo(Authorizable.class);
- if (memberAuthorizable != null) {
- group.addMember(memberAuthorizable);
- changed = true;
- }
+ Authorizable memberAuthorizable = getAuthorizable(baseResource, member,userManager,resolver);
+ if (memberAuthorizable != null) {
+ group.addMember(memberAuthorizable);
+ changed = true;
}
}
}
@@ -98,4 +98,28 @@ public abstract class AbstractGroupPostServlet extends
}
}
+ /**
+ * Gets the member, assuming its a principal name, failing that it assumes it a path to the resource.
+ * @param member the token pointing to the member, either a name or a uri
+ * @param userManager the user manager for this request.
+ * @param resolver the resource resolver for this request.
+ * @return the authorizable, or null if no authorizable was found.
+ */
+ private Authorizable getAuthorizable(Resource baseResource, String member, UserManager userManager,
+ ResourceResolver resolver) {
+ Authorizable memberAuthorizable = null;
+ try {
+ memberAuthorizable = userManager.getAuthorizable(member);
+ } catch (RepositoryException e) {
+ // if we can't find the members then it may be resolvable as a resource.
+ }
+ if ( memberAuthorizable == null ) {
+ Resource res = resolver.getResource(baseResource, member);
+ if (res != null) {
+ memberAuthorizable = res.adaptTo(Authorizable.class);
+ }
+ }
+ return memberAuthorizable;
+ }
+
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.