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 ef3a521c3ecc6b215cf5f149e4c5c4da3a4a4dd8 Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Fri Jul 17 01:10:40 2015 +0200 fixes #3730: add support of special wikittyId 'all' for reader/writer/admin in WikittyAuthorisation --- .../wikitty/services/WikittyServiceAuthorisation.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 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 5687ca6..bef5421 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 @@ -73,6 +73,9 @@ public class WikittyServiceAuthorisation extends WikittyServiceDelegator { * time in this class */ final static private TimeLog timeLog = new TimeLog(WikittyServiceAuthorisation.class); + /** special ID can be used in WikittyAuthorization to mark that all user isMember */ + final static public String PUBLIC = "all"; + /** cache de l'id du groupe AppAdmin */ transient protected String appAdminGroupId = null; @@ -759,21 +762,25 @@ public class WikittyServiceAuthorisation extends WikittyServiceDelegator { fieldName, String.class); + String parentId = WikittyAuthorisationHelper.getParent(extensionRights); + + boolean groupOrUserIsEmpty = groupOrUser == null || groupOrUser.isEmpty(); boolean isMember; - if (groupOrUser == null || groupOrUser.isEmpty()) { - isMember = considerEmptyGroupAsMembership; + if (groupOrUserIsEmpty) { + isMember = considerEmptyGroupAsMembership && parentId == null; } else { isMember = isMember(securityToken, userId, groupOrUser); } 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); + isMember = isMember(securityToken, userId, parent, fqFieldName, + considerEmptyGroupAsMembership && groupOrUserIsEmpty); } } } @@ -824,7 +831,7 @@ public class WikittyServiceAuthorisation extends WikittyServiceDelegator { String securityToken, String userId, Set<String> groupOrUser) { if (groupOrUser != null) { for (String id : groupOrUser) { - if (StringUtils.equals(id, userId)) { + if (StringUtils.equals(id, PUBLIC) || StringUtils.equals(id, userId)) { // on a l'id du user, on l'autorise return true; } else { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.