This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository bow. See http://git.chorem.org/bow.git commit bf124e708b75aa70095f08c384c85b48d4c02051 Author: Benjamin POUSSIN <poussin@codelutin.com> Date: Mon Jul 20 14:51:54 2015 +0200 - add wikitty AppAdminGroup when admin login - WikittyClient has now correct Wikitty SecurityToken and with AppAdminGroup can check if user can read/write bookmark --- .../src/main/java/org/chorem/bow/BowSession.java | 42 +++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/bow-ui/src/main/java/org/chorem/bow/BowSession.java b/bow-ui/src/main/java/org/chorem/bow/BowSession.java index a45bd5d..7419966 100644 --- a/bow-ui/src/main/java/org/chorem/bow/BowSession.java +++ b/bow-ui/src/main/java/org/chorem/bow/BowSession.java @@ -29,12 +29,16 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import java.io.Serializable; import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.Map; -import org.nuiton.wikitty.entities.Element; +import org.nuiton.wikitty.entities.WikittyGroup; +import org.nuiton.wikitty.entities.WikittyUser; import org.nuiton.wikitty.query.WikittyQuery; import org.nuiton.wikitty.query.WikittyQueryMaker; import org.nuiton.wikitty.query.WikittyQueryResult; +import org.nuiton.wikitty.services.WikittySecurityUtil; /** * Classe utilisee pour stocker les objets utils en session utilisateur @@ -187,10 +191,46 @@ public class BowSession implements Serializable { // generate temporary token String temporaryToken = BowUtils.generateToken(); setTemporaryToken(temporaryToken); + + String wikittyToken = proxy.getSecurityToken(user.getWikittyId()); + proxy.setSecurityToken(wikittyToken); + + if (isAdmin) { + checkAppAdminGroup(user, admins); + } } this.user = user; } + /** + * Verifie que le group AppAdminGroup exist et est a jour + * @param user + * @param adminsLogin other admin identified by login + */ + protected void checkAppAdminGroup(BowUser user, String ... adminsLogin) { + boolean mustSave = false; + WikittyGroup adminGroup = WikittySecurityUtil.getAppAdminGroup(proxy); + if (adminGroup == null) { + adminGroup = WikittySecurityUtil.createAppAdminGroup(user); + mustSave = true; + } + if (ArrayUtils.isNotEmpty(adminsLogin)) { + List<String> admins = Arrays.asList(adminsLogin); + WikittyQuery criteria = new WikittyQueryMaker() + .containsOne(WikittyUser.ELEMENT_FIELD_WIKITTYUSER_LOGIN, admins).end(); + List<String> adminsId = proxy.findAllByQuery(criteria).getAll(); + if (adminGroup.getMembers().size() != adminsId.size() || !adminGroup.getMembers().containsAll(adminsId)) { + adminGroup.setMembers(new HashSet<String>(adminsId)); + mustSave = true; + } + } + + if (mustSave) { + proxy.store(adminGroup); + } + } + + protected void checkPreference(BowPreference preference) { if (preference.getBookmarks() <= 0) { preference.setBookmarks(100); // set default to 100 -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.