From fcfee0de8bd8c460adee05314151699fa340a20c Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 4 Jul 2012 14:17:49 +0200
Subject: [PATCH] OO-291:  add permission group to resource

---
 .../org/olat/group/manager/BusinessGroupServiceImpl.java | 9 +++++++++
 .../java/org/olat/group/test/BGRightManagerTest.java     | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
index a378abfeab4..acd487be3d3 100644
--- a/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
+++ b/src/main/java/org/olat/group/manager/BusinessGroupServiceImpl.java
@@ -198,6 +198,9 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 		
 		if(resource instanceof OLATResourceImpl) {
 			businessGroupRelationDAO.addRelationToResource(group, resource);
+			//add coach and participant permission
+			securityManager.createAndPersistPolicyWithResource(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
+			securityManager.createAndPersistPolicyWithResource(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
 		}
 		return group;
 	}
@@ -1146,11 +1149,17 @@ public class BusinessGroupServiceImpl implements BusinessGroupService, UserDataD
 	@Transactional
 	public void addResourceTo(BusinessGroup group, OLATResource resource) {
 		businessGroupRelationDAO.addRelationToResource(group, resource);
+		//add coach and participant permission
+		securityManager.createAndPersistPolicyWithResource(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
+		securityManager.createAndPersistPolicyWithResource(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
 	}
 
 	@Override
 	public void removeResourceFrom(BusinessGroup group, OLATResource resource) {
 		businessGroupRelationDAO.deleteRelation(group, resource);
+		//remove permission
+		securityManager.deletePolicy(group.getOwnerGroup(), Constants.PERMISSION_COACH, resource);
+		securityManager.deletePolicy(group.getPartipiciantGroup(), Constants.PERMISSION_PARTI, resource);
 	}
 
 	@Override
diff --git a/src/test/java/org/olat/group/test/BGRightManagerTest.java b/src/test/java/org/olat/group/test/BGRightManagerTest.java
index cde72c59831..a72ba23a346 100644
--- a/src/test/java/org/olat/group/test/BGRightManagerTest.java
+++ b/src/test/java/org/olat/group/test/BGRightManagerTest.java
@@ -236,7 +236,7 @@ public class BGRightManagerTest extends OlatTestCase {
 		Assert.assertEquals(2, identities.size());
 
 		List<Policy> policies = securityManager.getPoliciesOfSecurityGroup(g1.getPartipiciantGroup());
-		Assert.assertEquals(3, policies.size()); // read, archiving, courseeditor
+		Assert.assertEquals(4, policies.size()); // read, parti, archiving, courseeditor
 
 		DBFactory.getInstance().closeSession(); // simulate user clicks
 		assertFalse(rightManager.hasBGRight(CourseRights.RIGHT_ARCHIVING, id1, c2));
-- 
GitLab