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