diff --git a/src/main/java/org/olat/restapi/group/LearningGroupWebService.java b/src/main/java/org/olat/restapi/group/LearningGroupWebService.java index 77a06c5aba3fd06468927364ea5ac0a354da9eac..af915ad8d15d86b8936819c7cf6d1c9b369a6586 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 a6d420e2ee61229262554a85f2ce5b45890b4f9e..47fe60fc49bb5d8dcdf5c7e0f26709071f3d95e8 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 149775f98fef34c3271f4a7ef5dc11713fe023b1..014f678e900962625809c3aa4a08b606bb86f29a 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 7e28569cdc8126c797428b5531ee595d915f9e97..768a608329ec751b682933598170bba76b925602 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; + } }