This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository wikitty. See http://git.nuiton.org/wikitty.git commit b7aabc3c87bd09d1db68281650b903597fc07127 Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Fri Jul 17 01:36:56 2015 +0200 fixes #3731: Authorise multiple parent for WikittyAuthorisation --- .../services/WikittyServiceAuthorisation.java | 21 +++++++++++++-------- .../wikitty/services/WikittyServiceSecurity.java | 18 ++++++++++++------ wikitty-api/src/main/xmi/wikitty.zargo | Bin 7867 -> 7876 bytes 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAuthorisation.java b/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAuthorisation.java index bef5421..f6c5ef9 100644 --- a/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAuthorisation.java +++ b/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceAuthorisation.java @@ -27,6 +27,7 @@ import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -762,12 +763,12 @@ public class WikittyServiceAuthorisation extends WikittyServiceDelegator { fieldName, String.class); - String parentId = WikittyAuthorisationHelper.getParent(extensionRights); + Set<String> parentsId = WikittyAuthorisationHelper.getParent(extensionRights); boolean groupOrUserIsEmpty = groupOrUser == null || groupOrUser.isEmpty(); boolean isMember; if (groupOrUserIsEmpty) { - isMember = considerEmptyGroupAsMembership && parentId == null; + isMember = considerEmptyGroupAsMembership && CollectionUtils.isEmpty(parentsId); } else { isMember = isMember(securityToken, userId, groupOrUser); } @@ -775,12 +776,16 @@ public class WikittyServiceAuthorisation extends WikittyServiceDelegator { if ( ! isMember) { // user don't have right on current object, check parent right - if (parentId != null) { - Wikitty parent = WikittyServiceEnhanced.restore( - getDelegate(), securityToken, parentId); - if (parent != null) { - isMember = isMember(securityToken, userId, parent, fqFieldName, - considerEmptyGroupAsMembership && groupOrUserIsEmpty); + if (CollectionUtils.isNotEmpty(parentsId)) { + List<Wikitty> parents = getDelegate().restore(securityToken, new ArrayList<String>(parentsId)); + for (Wikitty parent : parents) { + if (parent != null) { + isMember = isMember(securityToken, userId, parent, fqFieldName, + considerEmptyGroupAsMembership && groupOrUserIsEmpty); + if (isMember) { + break; + } + } } } } diff --git a/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java b/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java index 095fab3..2588e7a 100644 --- a/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java +++ b/wikitty-api/src/main/java/org/nuiton/wikitty/services/WikittyServiceSecurity.java @@ -29,6 +29,7 @@ import java.util.Date; import java.util.List; import java.util.Set; import java.util.UUID; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -791,12 +792,17 @@ public class WikittyServiceSecurity extends WikittyServiceDelegator { if ( ! isMember) { // user don't have right on current object, check parent right - String parentId = WikittyAuthorisationHelper.getParent(extensionRights); - if (parentId != null) { - Wikitty parent = WikittyServiceEnhanced.restore( - getDelegate(), securityToken, parentId); - if (parent != null) { - isMember = isMember(securityToken, userId, parent, fqFieldName); + Set<String> parentsId = WikittyAuthorisationHelper.getParent(extensionRights); + if (CollectionUtils.isNotEmpty(parentsId)) { + for (String parentId : parentsId) { + Wikitty parent = WikittyServiceEnhanced.restore( + getDelegate(), securityToken, parentId); + if (parent != null) { + isMember = isMember(securityToken, userId, parent, fqFieldName); + if (isMember) { + break; + } + } } } } diff --git a/wikitty-api/src/main/xmi/wikitty.zargo b/wikitty-api/src/main/xmi/wikitty.zargo index a1d57bf..a903c99 100644 Binary files a/wikitty-api/src/main/xmi/wikitty.zargo and b/wikitty-api/src/main/xmi/wikitty.zargo differ -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.