cziegeler    2002/08/15 07:51:27

  Modified:    src/java/org/apache/cocoon/webapps/authentication/components
                        AuthenticationManager.java HandlerManager.java
               src/java/org/apache/cocoon/webapps/authentication
                        AuthenticationConstants.java
               src/java/org/apache/cocoon/webapps/session/components
                        SessionManager.java
               src/java/org/apache/cocoon/webapps/authentication/acting
                        LogoutAction.java
  Log:
  Finished missing logout mode.
  
  Revision  Changes    Path
  1.13      +15 -7     
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java
  
  Index: AuthenticationManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/AuthenticationManager.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- AuthenticationManager.java        13 Aug 2002 15:29:10 -0000      1.12
  +++ AuthenticationManager.java        15 Aug 2002 14:51:27 -0000      1.13
  @@ -949,14 +949,16 @@
       }
   
       /**
  -     * Logout from the given handler
  -     * Terminate session if required
  +     * Logout from the given handler and eventually terminate session.
  +     * @param logoutHandlerName The authentication handler
  +     * @param mode              This mode defines how the termination of 
  +     *                           the session is handled.
        */
       public void logout(String  logoutHandlerName,
  -                       String  mode)
  +                        int     mode)
       throws ProcessingException {
           // synchronized via context
  -        if (this.getLogger().isDebugEnabled() == true) {
  +        if (this.getLogger().isDebugEnabled() ) {
               this.getLogger().debug("BEGIN logout handler=" + logoutHandlerName +
                                      ", mode="+mode);
           }
  @@ -993,11 +995,17 @@
               }
           }
   
  -        if ( mode != null && mode.equalsIgnoreCase("terminateSession") ) {
  +        if ( mode == AuthenticationConstants.LOGOUT_MODE_IMMEDIATELY ) {
               this.getSessionManager().terminateSession(true);
  +        } else if (!this.handlerManager.hasUserHandler( this.request )) {
  +            if (mode == AuthenticationConstants.LOGOUT_MODE_IF_UNUSED) {
  +                this.getSessionManager().terminateSession(false);
  +            } else {
  +                this.getSessionManager().terminateSession(true);
  +            }
           }
   
  -        if (this.getLogger().isDebugEnabled() == true) {
  +        if (this.getLogger().isDebugEnabled() ) {
               this.getLogger().debug("END logout");
           }
       }
  
  
  
  1.8       +17 -1     
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/HandlerManager.java
  
  Index: HandlerManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/components/HandlerManager.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- HandlerManager.java       12 Jul 2002 11:25:58 -0000      1.7
  +++ HandlerManager.java       15 Aug 2002 14:51:27 -0000      1.8
  @@ -257,4 +257,20 @@
           }
           return false;
       }
  +    
  +    /**
  +     * Check, if any handler is available
  +     */
  +    public boolean hasUserHandler(Request request) {
  +        if ( null == this.userHandlers) {
  +            final Session session = request.getSession(false);
  +            if ( null != session) {
  +                this.userHandlers = 
(Map)session.getAttribute(SESSION_ATTRIBUTE_HANDLERS);
  +            }
  +        }
  +        if ( null != this.userHandlers) {
  +            return !this.userHandlers.isEmpty();
  +        }
  +        return false;
  +    }
   }
  
  
  
  1.4       +10 -1     
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java
  
  Index: AuthenticationConstants.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/AuthenticationConstants.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- AuthenticationConstants.java      5 Jul 2002 07:16:33 -0000       1.3
  +++ AuthenticationConstants.java      15 Aug 2002 14:51:27 -0000      1.4
  @@ -69,6 +69,15 @@
       /** The name of the authentication context. */
       String SESSION_CONTEXT_NAME = "authentication";
   
  +    /** Logout mode: session is terminated immediately */
  +    int LOGOUT_MODE_IMMEDIATELY = 0;
  +    
  +    /** Logout mode: session is terminated if not used anymore (by the 
  +     * session or the authentication framework */
  +    int LOGOUT_MODE_IF_UNUSED= 1;
  +
  +    /** Logout mode: session is terminated immediately */
  +    int LOGOUT_MODE_IF_NOT_AUTHENTICATED = 2;
   }
   
   
  
  
  
  1.7       +2 -2      
xml-cocoon2/src/java/org/apache/cocoon/webapps/session/components/SessionManager.java
  
  Index: SessionManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/session/components/SessionManager.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SessionManager.java       31 Jul 2002 13:13:31 -0000      1.6
  +++ SessionManager.java       15 Aug 2002 14:51:27 -0000      1.7
  @@ -367,7 +367,7 @@
        *  data is deleted.
        *  @param force If this is set to true the session is terminated, if
        *                   it is set to false, the session is only terminated
  -     *                   if now session context is available.
  +     *                   if no session context is available.
        */
       public void terminateSession(boolean force) {
           // synchronized
  
  
  
  1.2       +12 -2     
xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/acting/LogoutAction.java
  
  Index: LogoutAction.java
  ===================================================================
  RCS file: 
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/webapps/authentication/acting/LogoutAction.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- LogoutAction.java 17 Apr 2002 10:04:52 -0000      1.1
  +++ LogoutAction.java 15 Aug 2002 14:51:27 -0000      1.2
  @@ -98,7 +98,17 @@
           if ( null == handlerName )
               throw new ProcessingException("LogoutAction requires at least the 
handler parameter.");
   
  -        final String mode = par.getParameter("mode", "normal");
  +        int mode;
  +        final String modeString = par.getParameter("mode", "if-not-authenticated");
  +        if ( modeString.equals("if-not-authenticated") ) {
  +            mode = AuthenticationConstants.LOGOUT_MODE_IF_NOT_AUTHENTICATED;
  +        } else if ( modeString.equalsIgnoreCase("if-unused") ) {
  +            mode = AuthenticationConstants.LOGOUT_MODE_IF_UNUSED;
  +        } else if ( modeString.equalsIgnoreCase("immediately") ) {
  +            mode = AuthenticationConstants.LOGOUT_MODE_IMMEDIATELY;
  +        } else {
  +           throw new ProcessingException("Unknown mode " + modeString);
  +        }
   
           // authenticate
           AuthenticationManager manager = null;
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     [EMAIL PROTECTED]
To unsubscribe, e-mail:          [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to