Author: bpapez
Date: Wed Jun 6 17:54:06 2007
New Revision: 17500
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D17500&repname=
=3Djahia
Log:
[JAHIA-1612] * get rid of magic numbers and use constants or methods instead
Modified:
branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java
Modified: branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/file=
manager/DAVFilemanager_Engine.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-5-0-SP=
-BRANCH/core/src/java/org/jahia/engines/filemanager/DAVFilemanager_Engine.j=
ava&rev=3D17500&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java (original)
+++ branches/JAHIA-5-0-SP-BRANCH/core/src/java/org/jahia/engines/filemanage=
r/DAVFilemanager_Engine.java Wed Jun 6 17:54:06 2007
@@ -31,6 +31,7 @@
import org.jahia.engines.EngineToolBox;
import org.jahia.engines.JahiaEngine;
import org.jahia.engines.addcontainer.AddContainer_Engine;
+import org.jahia.engines.rights.ManageRights;
import org.jahia.engines.shared.Category_Field;
import org.jahia.engines.updatecontainer.UpdateContainer_Engine;
import org.jahia.engines.users.SelectUG_Engine;
@@ -41,6 +42,7 @@
import org.jahia.params.ProcessingContext;
import org.jahia.params.SessionState;
import org.jahia.registries.ServicesRegistry;
+import org.jahia.services.acl.JahiaAbstractACL;
import org.jahia.services.acl.JahiaBaseACL;
import org.jahia.services.categories.Category;
import org.jahia.services.usermanager.*;
@@ -55,6 +57,7 @@
import org.jahia.utils.zip.ZipOutputStream;
=
import java.io.*;
+import java.security.Principal;
import java.text.Collator;
import java.text.SimpleDateFormat;
import java.util.*;
@@ -1394,6 +1397,10 @@
if (dav =3D=3D null) {
return false;
}
+ =
+ engineMap.put("hasNegativePermissions", Boolean.TRUE);
+ engineMap.put("actionNames", JahiaAbstractACL.getActionNames());
+ =
final Map readPerms =3D dav.getPermissions(DAVFileAccess.READ);
final Map writePerms =3D dav.getPermissions(DAVFileAccess.WRITE);
final Map adminPerms =3D dav.getPermissions(DAVFileAccess.MANAGE);
@@ -1408,9 +1415,12 @@
String s =3D (String) iterator.next();
=
int permissions =3D 0;
- permissions |=3D getPermissionsAsInt(s, 1, readPerms);
- permissions |=3D getPermissionsAsInt(s, 2, writePerms);
- permissions |=3D getPermissionsAsInt(s, 4, adminPerms);
+ permissions |=3D getPermissionsAsInt(
+ s, JahiaBaseACL.READ_RIGHTS, readPerms);
+ permissions |=3D getPermissionsAsInt(
+ s, JahiaBaseACL.WRITE_RIGHTS, writePerms);
+ permissions |=3D getPermissionsAsInt(
+ s, JahiaBaseACL.ADMIN_RIGHTS, adminPerms);
=
if (s.equals("nobody") || s.equals("all")) {
s =3D "+/groups/" + JahiaGroupManagerService.GUEST_GROUPNA=
ME + "/members";
@@ -1700,30 +1710,38 @@
}
=
for (int i =3D 0; i < submitedACLEntries.length; i++) {
- if ("00000000".equals(submitedACLEntries[i].substring(0, 8))) {
+ String aclEntry =3D submitedACLEntries[i];
+ if ("00000000".equals(aclEntry.substring(0, 8))) {
continue; // Don't do anything if no changes to the ACL en=
try.
}
// What kind of object has to be saved : user or group ?
// Object usr_grp;
// String usr_grpName;
+ Principal usr_grp; =
String subject;
- logger.debug("Submited ACL entry : " + submitedACLEntries[i]);
- if (submitedACLEntries[i].charAt(userNameWidth.intValue() + 12=
) =3D=3D 'u') {
- JahiaUser usr_grp =3D ServicesRegistry.getInstance().getJa=
hiaUserManagerService().
- lookupUser(
- submitedACLEntries[i].substring(userNameWi=
dth.intValue() + 13));
+ logger.debug("Submited ACL entry : " + aclEntry);
+ ManageRights mRights =3D ManageRights.getInstance(); =
=
+ int keyIndex =3D mRights.getVKey(userNameWidth); =
+ switch (aclEntry.charAt(keyIndex - 1)) {
+ case 'u': =
+ usr_grp =3D ServicesRegistry.getInstance().getJahiaUserMan=
agerService().
+ lookupUser(
+ aclEntry.substring (keyIndex));
// usr_grpName =3D ((JahiaUser)usr_grp).getUsername();
- String username =3D usr_grp.getUsername();
+ String username =3D ((JahiaUser)usr_grp).getUsername();
// if (JahiaUserManagerService.GUEST_USERNAME.equals(userna=
me)) {
// subject =3D "guest";
// } else {
subject =3D "/users/" + username;
// }
- } else {
- JahiaGroup usr_grp =3D ServicesRegistry.getInstance().getJ=
ahiaGroupManagerService().
- lookupGroup(submitedACLEntries[i].substring(userNa=
meWidth.intValue() + 13));
+ break;
+ case 'g':
+ usr_grp =3D ServicesRegistry.getInstance()
+ .getJahiaGroupManagerService().
+ lookupGroup(
+ aclEntry.substring (keyIndex));
// usr_grpName =3D ((JahiaGroup)usr_grp).getGroupname();
- String groupname =3D usr_grp.getGroupname();
+ String groupname =3D ((JahiaGroup)usr_grp).getGroupname();
// if (JahiaGroupManagerService.GUEST_GROUPNAME.equals(grou=
pname)) {
// subject =3D "nobody";
// } else if (JahiaGroupManagerService.ADMINISTRATORS_GROUP=
NAME.equals(groupname)) {
@@ -1733,13 +1751,19 @@
// } else {
subject =3D "+/groups/" + groupname + "/members";
// }
+ break;
+ default:
+ logger.error("Unknown principal type");
+ return null; =
}
// Decode the select box value parameters
- String permissions =3D submitedACLEntries[i].substring(8, 11);
+ int vDefInherit =3D mRights.getVDefaultInherit(); =
+ String permissions =3D aclEntry.substring(ManageRights.V_DEFAU=
LT_PERMISSION,
+ vDefInherit);
=
final boolean cannotRead =3D permissions.charAt(JahiaBaseACL.R=
EAD_RIGHTS) =3D=3D '-';
=
- if (cannotRead && submitedACLEntries[i].charAt(2) !=3D '1') {
+ if (cannotRead && aclEntry.charAt(ManageRights.V_REM_ACL_ENTRY=
) !=3D '1') {
final List usages =3D jahiaWebdavBaseService.findUsages(da=
v.getPath(), jParams, false);
if (usages !=3D null && usages.size() > 0) {
// Since we are cutting READ rights on the dav file, w=
e need to check its usages and check
@@ -1750,7 +1774,7 @@
}
}
=
- if (submitedACLEntries[i].charAt(0) =3D=3D '1') {
+ if (aclEntry.charAt(ManageRights.V_ADDED_ACL) =3D=3D '1') {
logger.debug("Added ACL entry for user : " + subject);
boolean res =3D dav.changePermissions(subject, permissions=
);
if (!res) {
@@ -1758,7 +1782,7 @@
tmp.add(dav.getPath());
return tmp;
}
- } else if (submitedACLEntries[i].charAt(11) =3D=3D '%') {
+ } else if (aclEntry.charAt(vDefInherit) =3D=3D '%') {
logger.debug("Cut inheritance for user : " + subject);
=
boolean res =3D dav.changePermissions(subject, permissions=
);
@@ -1767,7 +1791,7 @@
tmp.add(dav.getPath());
return tmp;
}
- } else if (submitedACLEntries[i].charAt(2) =3D=3D '1') {
+ } else if (aclEntry.charAt(ManageRights.V_REM_ACL_ENTRY) =3D=
=3D '1') {
logger.debug("Remove ACL for user : " + subject);
boolean res =3D dav.revokePermissions(subject);
if (!res) {
@@ -1776,7 +1800,7 @@
return tmp;
}
continue;
- } else if (submitedACLEntries[i].charAt(3) =3D=3D '1') {
+ } else if (aclEntry.charAt(ManageRights.V_RIGHT_CHANGE) =3D=3D=
'1') {
logger.debug("Permissions have changed to " + permissions =
+ " for user : " + subject);
boolean res =3D dav.changePermissions(subject, permissions=
);
if (!res) {
@@ -1785,7 +1809,7 @@
return tmp;
}
}
- if (submitedACLEntries[i].charAt(1) =3D=3D '1') {
+ if (aclEntry.charAt(ManageRights.V_RESET_CHILD_PERMISSION) =3D=
=3D '1') {
/** todo Reset child permissions. */
}
}
@@ -1840,22 +1864,17 @@
return result;
}
=
- private int getPermissionsAsInt(final String subject, final int c, fin=
al Map perms) {
+ private int getPermissionsAsInt(String subject, int c, Map perms) {
if (perms.containsKey(subject)) {
+ c =3D 1 << c;
int state =3D ((Integer) perms.get(subject)).intValue();
- if ((state & DAVFileAccess.GRANTED) =3D=3D DAVFileAccess.GRANT=
ED) {
- if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED) {
- return c + 8;
- } else {
+ if ((state & DAVFileAccess.GRANTED) =3D=3D DAVFileAccess.GRANT=
ED)
+ if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED)
+ return c + JahiaBaseACL.RIGHTS_INHERITANCE_FLAG;
+ else
return c;
- }
- } else {
- if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAccess=
.INHERITED) {
- return 8;
- } else {
- return 0;
- }
- }
+ else if ((state & DAVFileAccess.INHERITED) =3D=3D DAVFileAcces=
s.INHERITED)
+ return JahiaBaseACL.RIGHTS_INHERITANCE_FLAG;
}
return 0;
}
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list