From 2a50eabd5b0ac8d9ceb02493aa8ba4f6ce0ef4c8 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Wed, 26 Jun 2013 12:10:58 +0200 Subject: [PATCH] OMA-112: add write permission flag in group infos --- .../restapi/group/LearningGroupWebService.java | 6 +++--- .../org/olat/restapi/group/MyGroupWebService.java | 2 +- .../org/olat/restapi/support/ObjectFactory.java | 14 +++++++++++++- .../org/olat/restapi/support/vo/GroupInfoVO.java | 11 +++++++++++ 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/olat/restapi/group/LearningGroupWebService.java b/src/main/java/org/olat/restapi/group/LearningGroupWebService.java index 77a06c5aba3..af915ad8d15 100644 --- a/src/main/java/org/olat/restapi/group/LearningGroupWebService.java +++ b/src/main/java/org/olat/restapi/group/LearningGroupWebService.java @@ -361,15 +361,15 @@ public class LearningGroupWebService { if(bg == null) { return Response.serverError().status(Status.NOT_FOUND).build(); } - + + Identity identity = RestSecurityHelper.getIdentity(request); if(!isGroupManager(request)) { - Identity identity = RestSecurityHelper.getIdentity(request); if(!bgs.isIdentityInBusinessGroup(identity, bg)) { return Response.serverError().status(Status.UNAUTHORIZED).build(); } } - GroupInfoVO info = getInformation(bg); + GroupInfoVO info = getInformation(identity, bg); return Response.ok(info).build(); } diff --git a/src/main/java/org/olat/restapi/group/MyGroupWebService.java b/src/main/java/org/olat/restapi/group/MyGroupWebService.java index a6d420e2ee6..47fe60fc49b 100644 --- a/src/main/java/org/olat/restapi/group/MyGroupWebService.java +++ b/src/main/java/org/olat/restapi/group/MyGroupWebService.java @@ -140,7 +140,7 @@ public class MyGroupWebService { int count = 0; GroupInfoVO[] groupVOs = new GroupInfoVO[groups.size()]; for(BusinessGroup group:groups) { - groupVOs[count++] = ObjectFactory.getInformation(group); + groupVOs[count++] = ObjectFactory.getInformation(retrievedUser, group); } GroupInfoVOes voes = new GroupInfoVOes(); voes.setGroups(groupVOs); diff --git a/src/main/java/org/olat/restapi/support/ObjectFactory.java b/src/main/java/org/olat/restapi/support/ObjectFactory.java index 149775f98fe..014f678e900 100644 --- a/src/main/java/org/olat/restapi/support/ObjectFactory.java +++ b/src/main/java/org/olat/restapi/support/ObjectFactory.java @@ -22,9 +22,11 @@ package org.olat.restapi.support; import javax.ws.rs.core.EntityTag; import org.olat.basesecurity.Authentication; +import org.olat.basesecurity.BaseSecurityManager; import org.olat.collaboration.CollaborationTools; import org.olat.collaboration.CollaborationToolsFactory; import org.olat.core.gui.components.form.ValidationError; +import org.olat.core.id.Identity; import org.olat.core.id.OLATResourceable; import org.olat.core.util.resource.OresHelper; import org.olat.course.CourseModule; @@ -65,7 +67,7 @@ public class ObjectFactory { return vo; } - public static GroupInfoVO getInformation(BusinessGroup grp) { + public static GroupInfoVO getInformation(Identity identity, BusinessGroup grp) { GroupInfoVO vo = new GroupInfoVO(); vo.setKey(grp.getKey()); vo.setName(grp.getName()); @@ -87,6 +89,16 @@ public class ObjectFactory { boolean hasFolder = collabTools.isToolEnabled(CollaborationTools.TOOL_FOLDER); vo.setHasFolder(hasFolder); + boolean hasFolderWrite = hasFolder; + if(hasFolder) { + Long access = collabTools.lookupFolderAccess(); + if(access != null && access.intValue() == CollaborationTools.FOLDER_ACCESS_OWNERS) { + //is owner? + hasFolderWrite = BaseSecurityManager.getInstance().isIdentityInSecurityGroup(identity, grp.getOwnerGroup()); + } + } + vo.setFolderWrite(hasFolderWrite); + return vo; } diff --git a/src/main/java/org/olat/restapi/support/vo/GroupInfoVO.java b/src/main/java/org/olat/restapi/support/vo/GroupInfoVO.java index 7e28569cdc8..768a608329e 100644 --- a/src/main/java/org/olat/restapi/support/vo/GroupInfoVO.java +++ b/src/main/java/org/olat/restapi/support/vo/GroupInfoVO.java @@ -21,6 +21,7 @@ package org.olat.restapi.support.vo; import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; /** @@ -40,6 +41,8 @@ public class GroupInfoVO extends GroupVO { private Long forumKey; private Boolean hasWiki = Boolean.FALSE; private Boolean hasFolder = Boolean.FALSE; + @XmlAttribute(name="folderWrite", required=false) + private boolean folderWrite; public GroupInfoVO() { //make JAXB happy @@ -76,4 +79,12 @@ public class GroupInfoVO extends GroupVO { public void setHasFolder(Boolean hasFolder) { this.hasFolder = hasFolder; } + + public boolean isFolderWrite() { + return folderWrite; + } + + public void setFolderWrite(boolean folderWrite) { + this.folderWrite = folderWrite; + } } -- GitLab