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);
  +    }
   }
  

Reply via email to