cmailleux 2005/10/19 17:18:34 CEST
Modified files:
core/src/java/org/jahia/services/fields ContentField.java
Log:
Override check access method to test against fields rights defined in the
containerlist
Revision Changes Path
1.34 +30 -1
jahia/core/src/java/org/jahia/services/fields/ContentField.java
http://jahia.mine.nu:8080/cgi-bin/cvsweb.cgi/jahia/core/src/java/org/jahia/services/fields/ContentField.java.diff?r1=1.33&r2=1.34&f=h
Index: ContentField.java
===================================================================
RCS file:
/home/cvs/repository/jahia/core/src/java/org/jahia/services/fields/ContentField.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- ContentField.java 18 Oct 2005 13:40:04 -0000 1.33
+++ ContentField.java 19 Oct 2005 15:18:33 -0000 1.34
@@ -45,6 +45,8 @@
import org.jahia.data.fields.JahiaField;
import org.jahia.data.fields.JahiaFieldDefinition;
import org.jahia.data.events.JahiaEvent;
+import org.jahia.data.containers.JahiaContainer;
+import org.jahia.data.containers.JahiaContainerList;
import org.jahia.exceptions.JahiaException;
import org.jahia.params.ProcessingContext;
import org.jahia.registries.JahiaListenersRegistry;
@@ -54,6 +56,8 @@
import org.jahia.services.acl.JahiaBaseACL;
import org.jahia.services.containers.ContentContainer;
import org.jahia.services.containers.FieldsChangeEventListener;
+import org.jahia.services.containers.JahiaContainersService;
+import org.jahia.services.containers.ContentContainerList;
import org.jahia.services.pages.ContentPage;
import org.jahia.services.sites.JahiaSite;
import org.jahia.services.sites.SiteLanguageSettings;
@@ -2001,5 +2005,30 @@
append(getObjectKey().getType());
return buff.toString();
}
-
+
+ public boolean checkAccess(JahiaUser user, int permission) {
+ if (containerID > 0) {
+ // We must get the acl associated with the container list
+ try {
+ ContentContainer container =
ContentContainer.getContainer(containerID);
+ if (container.getParentContainerListID() > 0) {
+ ServicesRegistry instance =
ServicesRegistry.getInstance();
+ Map properties =
instance.getJahiaContainersService().getContainerListProperties(container.getParentContainerListID());
+ String aclID = (String) properties.get("view_field_acl_"
+ instance.getJahiaFieldService().loadFieldDefinition(fieldDefID).getName());
+ if (aclID != null && !"".equals(aclID)) {
+ boolean result = false;
+ try {
+ JahiaBaseACL acl = new
JahiaBaseACL(Integer.parseInt(aclID));
+ result = acl.getPermission(user, permission);
+ } catch (JahiaException ex) {
+ logger.debug("Cannot load ACL ID " + getAclID(),
ex);
+ }
+ return result;
+ }
+ }
+ } catch (JahiaException e) {
+ }
+ }
+ return super.checkAccess(user, permission);
+ }
}