[cvs] expresso commit by lhamel: add All Users group to evaluation
of
JCorporate Ltd
jcorp at jcorp2.servlets.net
Sun Nov 21 14:02:12 PST 2004
Log Message:
-----------
add All Users group to evaluation of canRead, canWrite, etc.
Modified Files:
--------------
expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj:
RowSecuredDBObject.java
Revision Data
-------------
Index: RowSecuredDBObject.java
===================================================================
RCS file: /home/javacorp/.cvs/expresso/expresso/expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java,v
retrieving revision 1.36
retrieving revision 1.37
diff -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java -Lexpresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java -u -r1.36 -r1.37
--- expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java
+++ expresso-web/WEB-INF/src/com/jcorporate/expresso/core/dbobj/RowSecuredDBObject.java
@@ -575,7 +575,8 @@
List groups = this.getAdministrateGroups();
// intersection of two groups is retained
- groups.retainAll(user.getGroups());
+ List memberships = getAugmentedGroupList(user);
+ groups.retainAll(memberships);
result = groups.size() > 0;
}
@@ -627,7 +628,8 @@
/**
* @todo rewrite as a multidbobject join
*/
- groups.retainAll(user.getGroups());
+ List memberships = getAugmentedGroupList(user);
+ groups.retainAll(memberships);
result = groups.size() > 0;
}
@@ -635,6 +637,18 @@
}
/**
+ * augment a user's group list with the All Users group, if necessary.
+ */
+ private List getAugmentedGroupList(User user) throws DBException {
+ List memberships = user.getGroups();
+ if ( !memberships.contains(UserGroup.ALL_USERS_GROUP)
+ && !user.getLoginName().equals(User.UNKNOWN_USER)) {
+ memberships.add(UserGroup.ALL_USERS_GROUP);
+ }
+ return memberships;
+ }
+
+ /**
* @return true if requesting id has permission to write
* @throws DBException upon database communication error
*/
@@ -673,7 +687,8 @@
List groups = this.getWriteGroups();
// intersection of two groups is retained
- groups.retainAll(user.getGroups());
+ List memberships = getAugmentedGroupList(user);
+ groups.retainAll(memberships);
result = groups.size() > 0;
}
More information about the cvs
mailing list