cziegeler 2004/01/27 00:26:25
Modified: . status.xml
src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration
HandlerConfiguration.java
src/blocks/authentication-fw/samples sitemap.xmap
src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components
PipelineAuthenticator.java
Log:
<action dev="CZ" type="fix" fixes-bug="26450" due-to-email="[EMAIL
PROTECTED] " due-to="Ralph Goers">
Allow the Authentication Framework to invoke a pipeline during logout
</action>
Revision Changes Path
1.228 +4 -1 cocoon-2.1/status.xml
Index: status.xml
===================================================================
RCS file: /home/cvs/cocoon-2.1/status.xml,v
retrieving revision 1.227
retrieving revision 1.228
diff -u -r1.227 -r1.228
--- status.xml 26 Jan 2004 02:11:02 -0000 1.227
+++ status.xml 27 Jan 2004 08:26:25 -0000 1.228
@@ -196,6 +196,9 @@
<changes>
<release version="@version@" date="@date@">
+ <action dev="CZ" type="fix" fixes-bug="26450" due-to-email="[EMAIL
PROTECTED] " due-to="Ralph Goers">
+ Allow the Authentication Framework to invoke a pipeline during logout
+ </action>
<action dev="AG" type="update">
Updated commons-collections to version 3.0
</action>
1.4 +13 -1
cocoon-2.1/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/HandlerConfiguration.java
Index: HandlerConfiguration.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/configuration/HandlerConfiguration.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- HandlerConfiguration.java 7 Nov 2003 11:21:50 -0000 1.3
+++ HandlerConfiguration.java 27 Jan 2004 08:26:25 -0000 1.4
@@ -85,6 +85,9 @@
/** The authentication resource */
private String authenticationResource;
+ /** The logout resource */
+ private String logoutResource;
+
/** The class name of the authenticator to use */
private String authenticatorClass;
@@ -158,6 +161,8 @@
// the uri attribute is optional for other authenticators
this.authenticationResource = child.getAttribute("uri", null);
}
+ // optinal logout resource
+ this.logoutResource = child.getAttribute("logout-uri", null);
this.authenticationResourceParameters =
SourceParameters.create(child);
// get load resource (optional)
@@ -254,6 +259,13 @@
return this.authenticationResourceParameters;
}
+ /**
+ * Get the logout resource
+ */
+ public String getLogoutResource() {
+ return this.logoutResource;
+ }
+
/** Get the save resource */
public String getSaveResource() {
return this.saveResource; }
1.10 +19 -1
cocoon-2.1/src/blocks/authentication-fw/samples/sitemap.xmap
Index: sitemap.xmap
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/authentication-fw/samples/sitemap.xmap,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- sitemap.xmap 18 Nov 2003 06:37:27 -0000 1.9
+++ sitemap.xmap 27 Jan 2004 08:26:25 -0000 1.10
@@ -13,9 +13,27 @@
<map:component-configurations>
<authentication-manager>
<handlers>
+ <!-- A handler is responsible for protecting documents (pipelines).
+ The handler requires three configuration values. One of them
is
+ a unique name that is used as a reference for the handler.
+ The other values are documented inline below.
+ -->
<handler name="demohandler">
+ <!-- The redirect-to configuration defines a pipeline that is
called
+ whenever a not authenticated user tries to access a
protected
+ document (pipeline) -->
<redirect-to uri="cocoon:/login"/>
+ <!-- The authentication configuration defines the authentication
process.
+ In this example, an internal pipeline "authenticate" is called.
+ This pipeline gets all necessary information like user name and
+ password as parameters and tries to authenticate this user.
+ On successful authentication the pipeline delivers a specific
+ XML format.
+ -->
<authentication uri="cocoon:raw:/authenticate"/>
+ <!-- In addition you can specifiy a logout-uri parameter above.
Then
+ the pipeline denoted by that parameter is called on logout.
+ -->
</handler>
</handlers>
</authentication-manager>
1.10 +23 -2
cocoon-2.1/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/PipelineAuthenticator.java
Index: PipelineAuthenticator.java
===================================================================
RCS file:
/home/cvs/cocoon-2.1/src/blocks/authentication-fw/java/org/apache/cocoon/webapps/authentication/components/PipelineAuthenticator.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- PipelineAuthenticator.java 24 Nov 2003 04:00:34 -0000 1.9
+++ PipelineAuthenticator.java 27 Jan 2004 08:26:25 -0000 1.10
@@ -314,7 +314,28 @@
* @see
org.apache.cocoon.webapps.authentication.components.Authenticator#logout(org.apache.cocoon.webapps.authentication.user.UserHandler)
*/
public void logout(UserHandler handler) {
- // we simply do nothing here
+ if (this.getLogger().isDebugEnabled() ) {
+ this.getLogger().debug("logout using handler " +
handler.getHandlerName());
+ }
+
+ final HandlerConfiguration configuration =
handler.getHandlerConfiguration();
+ final String logoutResourceName = configuration.getLogoutResource();
+ if (logoutResourceName != null) {
+ final SourceParameters parameters =
configuration.getAuthenticationResourceParameters();
+
+ // invoke the source
+ Source source = null;
+ try {
+ // This allows arbitrary business logic to be called.
Whatever is returned
+ // is ignored.
+ source = SourceUtil.getSource(logoutResourceName, null,
parameters, this.resolver);
+ Document doc = SourceUtil.toDOM(source);
+ } catch (Exception ignore) {
+ this.getLogger().error("logout: " + ignore.getMessage(),
ignore);
+ } finally {
+ this.resolver.release(source);
+ }
+ }
}
}