Author: ludovic
Date: 2008-01-09 23:35:28 +0100 (Wed, 09 Jan 2008)
New Revision: 6711
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/server/CurrikiServiceImpl.java
Log:
CURRIKI-1281 Implement rights for group collections
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/server/CurrikiServiceImpl.java
===================================================================
---
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/server/CurrikiServiceImpl.java
2008-01-09 22:16:16 UTC (rev 6710)
+++
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/server/CurrikiServiceImpl.java
2008-01-09 22:35:28 UTC (rev 6711)
@@ -636,7 +636,16 @@
}
private void applyRightsPolicy(XWikiDocument assetDoc, XWikiContext
context) throws XWikiException {
+ // If collection is user
+ String usergroupfield = "users";
+ String usergroupvalue = ("".equals(assetDoc.getCreator())) ?
context.getUser() : assetDoc.getCreator();
+ // If collection is group
+ if (assetDoc.getSpace().startsWith("Coll_Group_")) {
+ usergroupfield = "groups";
+ usergroupvalue = assetDoc.getSpace().substring(5) + ".MemberGroup";
+ }
+
assetDoc.removeObjects("XWiki.XWikiRights");
BaseObject assetObj = assetDoc.getObject(Constants.ASSET_CLASS);
@@ -648,7 +657,7 @@
rightObj.setIntValue("allow", 1);
rightObj = assetDoc.newObject("XWiki.XWikiRights", context);
- rightObj.setStringValue("users", ("".equals(assetDoc.getCreator())) ?
context.getUser() : assetDoc.getCreator());
+ rightObj.setStringValue(usergroupfield, usergroupvalue);
rightObj.setStringValue("levels", "edit");
rightObj.setIntValue("allow", 1);
@@ -663,7 +672,7 @@
}
else {
rightObj = assetDoc.newObject("XWiki.XWikiRights", context);
- rightObj.setStringValue("users",
("".equals(assetDoc.getCreator())) ? context.getUser() : assetDoc.getCreator());
+ rightObj.setStringValue(usergroupfield, usergroupvalue);
rightObj.setStringValue("levels", "view");
rightObj.setIntValue("allow", 1);
}
@@ -671,6 +680,16 @@
private void protectPage(XWikiDocument assetDoc, XWikiContext context)
throws XWikiException {
+ // If collection is user
+ String usergroupfield = "users";
+ String usergroupvalue = ("".equals(assetDoc.getCreator())) ?
context.getUser() : assetDoc.getCreator();
+
+ // If collection is group
+ if (assetDoc.getSpace().startsWith("Coll_Group_")) {
+ usergroupfield = "groups";
+ usergroupvalue = assetDoc.getSpace().substring(5) + ".MemberGroup";
+ }
+
assetDoc.removeObjects("XWiki.XWikiRights");
BaseObject obj = assetDoc.newObject("XWiki.XWikiRights", context);
@@ -684,14 +703,24 @@
obj.setIntValue("allow", 1);
obj = assetDoc.newObject("XWiki.XWikiRights", context);
- obj.setStringValue("users", ("".equals(assetDoc.getCreator())) ?
context.getUser() : assetDoc.getCreator());
+ obj.setStringValue(usergroupfield, usergroupvalue);
obj.setStringValue("levels", "edit");
obj.setIntValue("allow", 1);
}
- private void protectEditPage(XWikiDocument doc, XWikiContext context)
throws XWikiException {
- BaseObject obj = doc.newObject("XWiki.XWikiRights", context);
- obj.setStringValue("users", ("".equals(doc.getCreator())) ?
context.getUser() : doc.getCreator());
+ private void protectEditPage(XWikiDocument assetDoc, XWikiContext context)
throws XWikiException {
+ // If collection is user
+ String usergroupfield = "users";
+ String usergroupvalue = ("".equals(assetDoc.getCreator())) ?
context.getUser() : assetDoc.getCreator();
+
+ // If collection is group
+ if (assetDoc.getSpace().startsWith("Coll_Group_")) {
+ usergroupfield = "groups";
+ usergroupvalue = assetDoc.getSpace().substring(5) + ".MemberGroup";
+ }
+
+ BaseObject obj = assetDoc.newObject("XWiki.XWikiRights", context);
+ obj.setStringValue(usergroupfield, usergroupvalue);
obj.setStringValue("levels", "edit");
obj.setIntValue("allow", 1);
}
@@ -699,7 +728,10 @@
private void protectSpace(String spaceName, XWikiContext context) throws
XWikiException {
String owner = context.getUser();
boolean ownerIsUser = true;
- if (spaceName.startsWith("Coll_")){
+ if (spaceName.startsWith("Coll_Group_")){
+ owner = spaceName.substring(5) + ".MemberGroup";
+ ownerIsUser = false;
+ } else if (spaceName.startsWith("Coll_")){
String spaceOwner = "XWiki."+spaceName.replaceFirst("Coll_", "");
if (context.getWiki().exists(spaceOwner, context)){
XWikiDocument ownerDoc =
context.getWiki().getDocument(spaceOwner, context);
@@ -736,6 +768,14 @@
obj.setStringValue("levels", "edit");
obj.setIntValue("allow", 1);
+ if (spaceName.startsWith("Coll_Group_")){
+ doc.setStringValue("XWiki.XWikiPreferences", "parent",
spaceName.substring(5));
+ obj = doc.newObject("XWiki.XWikiGlobalRights", context);
+ obj.setStringValue("groups", spaceName.substring(5) +
".AdminGroup");
+ obj.setStringValue("levels", "admin");
+ obj.setIntValue("allow", 1);
+ }
+
context.getWiki().saveDocument(doc,
context.getMessageTool().get("curriki.comment.protectspace"), context);
}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications