Update of 
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/struts
In directory 
james.mmbase.org:/tmp/cvs-serv22432/cmsc/utilities/src/java/com/finalist/cmsc/struts

Modified Files:
        TreeAction.java MMBaseAction.java 
Log Message:
CMSC-1340 Handle an Ajax request from the site tree and repository if the user 
is no longer authorized. Redirect him/her to the login page instead of showing 
a nonsense popup.


See also: 
http://cvs.mmbase.org/viewcvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/struts
See also: http://www.mmbase.org/jira/browse/CMSC-1340


Index: TreeAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/struts/TreeAction.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- TreeAction.java     25 Feb 2009 13:43:18 -0000      1.8
+++ TreeAction.java     8 Apr 2009 15:05:28 -0000       1.9
@@ -9,6 +9,7 @@
  */
 package com.finalist.cmsc.struts;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.List;
 
@@ -20,6 +21,8 @@
 import org.apache.struts.action.*;
 import org.mmbase.bridge.Cloud;
 import org.mmbase.bridge.Node;
+import org.mmbase.util.logging.Logger;
+import org.mmbase.util.logging.Logging;
 
 import com.finalist.cmsc.mmbase.TreeUtil;
 import com.finalist.cmsc.util.HttpUtil;
@@ -28,6 +31,9 @@
 
 public abstract class TreeAction extends MMBaseAction {
 
+   /** MMbase logging system */
+   private static final Logger log = 
Logging.getLoggerInstance(TreeAction.class);
+
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
HttpServletRequest request,
          HttpServletResponse response, Cloud cloud) throws Exception {
@@ -98,6 +104,19 @@
       return ret;
    }
 
+   @Override
+   protected ActionForward redirectLogin(HttpServletRequest req, 
HttpServletResponse resp) {
+      try {
+         resp.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+      
+         return null;
+      } catch (IOException e) {
+         log.error("Failed to handle redirecting to the login page", e);
+      }
+      
+      return super.redirectLogin(req, resp);
+   }
+
 
    protected String getChannelId(HttpServletRequest request, Cloud cloud) {
       return request.getParameter("channel");


Index: MMBaseAction.java
===================================================================
RCS file: 
/var/cvs/contributions/CMSContainer/cmsc/utilities/src/java/com/finalist/cmsc/struts/MMBaseAction.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- MMBaseAction.java   10 Sep 2008 12:45:42 -0000      1.11
+++ MMBaseAction.java   8 Apr 2009 15:05:28 -0000       1.12
@@ -52,7 +52,7 @@
                   }
                }
                else {
-                  return redirectLogin(request);
+                  return redirectLogin(request, response);
                }
             }
          }
@@ -64,7 +64,7 @@
          Rank requiredRank = getRequiredRank();
          if (requiredRank != null) {
             if (requiredRank.getInt() > cloud.getUser().getRank().getInt()) {
-               return redirectLogin(request);
+               return redirectLogin(request, response);
             }
          }
       }
@@ -109,7 +109,15 @@
    }
 
 
+   /**
+    * @deprecated Use {...@link #redirectLogin(HttpServletRequest, 
HttpServletResponse)} instead.
+    */
    protected ActionForward redirectLogin(HttpServletRequest req) {
+      return redirectLogin(req, null);
+   }
+   
+   
+   protected ActionForward redirectLogin(HttpServletRequest req, 
HttpServletResponse resp) {
       // could not create a cloud on the session
       String loginForward = "/editors/login.jsp";
       String referrer = req.getRequestURL().toString()
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to