You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by mr...@apache.org on 2003/10/25 03:16:52 UTC
cvs commit: jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet AuthorizeAction.java
mrdon 2003/10/24 18:16:52
Modified: contrib/struts-chain/src/conf chain-config.xml
contrib/struts-chain/src/java/org/apache/struts/chain
AbstractAuthorizeAction.java
contrib/struts-chain/src/java/org/apache/struts/chain/servlet
AuthorizeAction.java
Added: contrib/struts-chain/src/java/org/apache/struts/chain
UnauthorizedActionException.java
Log:
Changed AuthorizeAction to throw an UnauthorizedActionException rather
than returning an HTTP 403 error
Revision Changes Path
1.8 +0 -0 jakarta-struts/contrib/struts-chain/src/conf/chain-config.xml
Index: chain-config.xml
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/struts-chain/src/conf/chain-config.xml,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
1.2 +59 -5 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/AbstractAuthorizeAction.java
Index: AbstractAuthorizeAction.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/AbstractAuthorizeAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractAuthorizeAction.java 24 Oct 2003 02:35:02 -0000 1.1
+++ AbstractAuthorizeAction.java 25 Oct 2003 01:16:52 -0000 1.2
@@ -75,6 +75,9 @@
import org.apache.struts.chain.util.ClassUtils;
import org.apache.struts.config.ActionConfig;
import org.apache.struts.config.FormBeanConfig;
+import org.apache.struts.util.MessageResources;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
/**
@@ -93,6 +96,10 @@
private String actionConfigKey = Constants.ACTION_CONFIG_KEY;
+ private String actionServletKey = Constants.ACTION_SERVLET_KEY;
+
+ private static final Log log =
+ LogFactory.getLog(AbstractAuthorizeAction.class);
// -------------------------------------------------------------- Properties
@@ -122,6 +129,32 @@
this.actionConfigKey = actionConfigKey;
}
+
+
+ /**
+ * <p>Return the context attribute key under which the
+ * <code>ActionServlet</code> for the currently selected application
+ * action is stored.</p>
+ */
+ public String getActionServletKey() {
+
+ return (this.actionServletKey);
+
+ }
+
+
+ /**
+ * <p>Set the context attribute key under which the
+ * <code>ActionServlet</code> for the currently selected application
+ * action is stored.</p>
+ *
+ * @param actionServletKey The new context attribute key
+ */
+ public void setActionServletKey(String actionServletKey) {
+
+ this.actionServletKey = actionServletKey;
+
+ }
// ---------------------------------------------------------- Public Methods
@@ -149,7 +182,28 @@
return (false);
}
- return !(isAuthorized(context, roles, actionConfig));
+ boolean throwEx = false;
+ try {
+ throwEx = !(isAuthorized(context, roles, actionConfig));
+ }
+ catch (Exception ex) {
+ throwEx = true;
+ log.error("Unable to complete authorization process", ex);
+ }
+
+ if (throwEx) {
+ // Retrieve internal message resources
+ ActionServlet servlet =
+ (ActionServlet) context.get(actionServletKey);
+ MessageResources resources = servlet.getInternal();
+
+ // The current user is not authorized for this action
+ throw new UnauthorizedActionException(
+ resources.getMessage("notAuthorized",
+ actionConfig.getPath()));
+ } else {
+ return (false);
+ }
}
1.1 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/UnauthorizedActionException.java
Index: UnauthorizedActionException.java
===================================================================
/*
* $Header: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/UnauthorizedActionException.java,v 1.1 2003/10/25 01:16:52 mrdon Exp $
* $Revision: 1.1 $
* $Date: 2003/10/25 01:16:52 $
*
* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Struts", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.struts.chain;
/**
* <p>Exception thrown when the chosen action mapping is not authorized
* for the current request.</p>
*
*@author Don Brown
*@version $Revision: 1.1 $ $Date: 2003/10/25 01:16:52 $
*/
public class UnauthorizedActionException extends Exception {
/** Constructor */
public UnauthorizedActionException() {
super();
}
/**
* Constructor.
*
*@param message The error or warning message.
*/
public UnauthorizedActionException(String message) {
super(message);
}
}
1.2 +4 -13 jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet/AuthorizeAction.java
Index: AuthorizeAction.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/struts-chain/src/java/org/apache/struts/chain/servlet/AuthorizeAction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AuthorizeAction.java 24 Oct 2003 02:35:02 -0000 1.1
+++ AuthorizeAction.java 25 Oct 2003 01:16:52 -0000 1.2
@@ -62,7 +62,6 @@
package org.apache.struts.chain.servlet;
-import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.chain.Context;
import org.apache.commons.chain.web.servlet.ServletWebContext;
@@ -90,10 +89,9 @@
protected boolean isAuthorized(Context context, String[] roles,
ActionConfig mapping) throws Exception {
- // Identify the HTTP request and response objects
+ // Identify the HTTP request object
ServletWebContext swcontext = (ServletWebContext) context;
HttpServletRequest request = swcontext.getRequest();
- HttpServletResponse response = swcontext.getResponse();
// Check the current user against the list of required roles
for (int i = 0; i < roles.length; i++) {
@@ -101,17 +99,10 @@
return (true);
}
}
-
- // Retrieve internal message resources
- ActionServlet servlet =
- (ActionServlet) context.get(Constants.ACTION_SERVLET_KEY);
- MessageResources resources = servlet.getInternal();
- // The current user is not authorized for this action
- response.sendError(
- HttpServletResponse.SC_FORBIDDEN,
- resources.getMessage("notAuthorized", mapping.getPath()));
- return (false);
+ // Default to unauthorized
+ return (false);
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: struts-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: struts-dev-help@jakarta.apache.org