You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lenya.apache.org by mi...@apache.org on 2006/04/08 01:20:39 UTC

svn commit: r392449 - /lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java

Author: michi
Date: Fri Apr  7 16:20:38 2006
New Revision: 392449

URL: http://svn.apache.org/viewcvs?rev=392449&view=rev
Log:
usecase-policies read from config

Modified:
    lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java

Modified: lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java
URL: http://svn.apache.org/viewcvs/lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java?rev=392449&r1=392448&r2=392449&view=diff
==============================================================================
--- lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java (original)
+++ lenya/trunk/src/java/org/apache/lenya/cms/ac/usecase/UsecaseAuthorizer.java Fri Apr  7 16:20:38 2006
@@ -21,6 +21,7 @@
 import java.util.List;
 
 import org.apache.avalon.framework.activity.Disposable;
+import org.apache.avalon.framework.configuration.Configuration;
 import org.apache.avalon.framework.logger.AbstractLogEnabled;
 import org.apache.avalon.framework.parameters.ParameterException;
 import org.apache.avalon.framework.parameters.Parameterizable;
@@ -63,13 +64,27 @@
 
     /**
      * Returns the source URI of the usecase role configuration file for a certain publication.
+     * TODO: This method seems to be called many times. Wouldn't it make sense to cache it somehow ...?
      * 
      * @param publication The publication.
      * @return A string representing a URI.
      */
-    protected String getConfigurationURI(Publication publication) {
-        return "context:///" + Publication.PUBLICATION_PREFIX_URI + "/" + publication.getId()
-                + CONFIGURATION_FILE;
+    protected String getConfigurationURI(Publication publication, String requestURI) {
+        String configURI = null;
+        try {
+            //org.apache.lenya.ac.AccessController ac = new org.apache.lenya.cms.ac.PublicationAccessControllerResolver().resolveAccessController(publication, requestURI);
+            Configuration config = new org.apache.lenya.cms.ac.PublicationAccessControllerResolver().getConfiguration(publication);
+            Configuration[] authorizerConfigs = config.getChildren("authorizer");
+            for (int i = 0; i < authorizerConfigs.length; i++) {
+               if (authorizerConfigs[i].getAttribute("type").equals("usecase")) {
+                   Configuration paraConfig = authorizerConfigs[i].getChild("parameter");
+                   configURI = paraConfig.getAttribute("value");
+               }
+            }
+        } catch (Exception e) {
+            getLogger().error(e.getMessage(), e);
+        }
+        return configURI;
     }
 
     /**
@@ -91,11 +106,11 @@
                     _configurationUri = getConfigurationURI();
                 } else {
                     Publication publication = PublicationUtil.getPublication(this.manager, request);
-                    _configurationUri = getConfigurationURI(publication);
+                    _configurationUri = getConfigurationURI(publication, request.getRequestURI());
                 }
 
                 Role[] roles = PolicyAuthorizer.getRoles(request);
-                authorized = authorizeUsecase(usecase, roles, _configurationUri);
+                authorized = authorizeUsecase(usecase, roles, _configurationUri, request.getRequestURI());
             } else {
                 getLogger().debug("No usecase to authorize. Granting access.");
             }
@@ -123,7 +138,7 @@
      * @return A boolean value.
      * @throws AccessControlException when something went wrong.
      */
-    public boolean authorizeUsecase(String usecase, Role[] roles, String _configurationUri)
+    public boolean authorizeUsecase(String usecase, Role[] roles, String _configurationUri, String requestURI)
             throws AccessControlException {
         getLogger().debug("Authorizing usecase [" + usecase + "]");
         boolean authorized = true;
@@ -210,9 +225,9 @@
      * @return A boolean value.
      * @throws AccessControlException when something went wrong.
      */
-    public boolean authorizeUsecase(String usecase, Role[] roles, Publication publication)
+    public boolean authorizeUsecase(String usecase, Role[] roles, Publication publication, String requestURI)
             throws AccessControlException {
-        return authorizeUsecase(usecase, roles, getConfigurationURI(publication));
+        return authorizeUsecase(usecase, roles, getConfigurationURI(publication, requestURI), requestURI);
     }
 
     protected boolean authorize(Request request, String webappUrl) throws AccessControlException {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@lenya.apache.org
For additional commands, e-mail: commits-help@lenya.apache.org