Index: lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java =================================================================== diff -u -r8fc48568c579f2b32041d489a8ebf02075847fa3 -r2c6d99838a7d029871ec9a697efbfb636ea6a329 --- lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java (.../HomeAction.java) (revision 8fc48568c579f2b32041d489a8ebf02075847fa3) +++ lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java (.../HomeAction.java) (revision 2c6d99838a7d029871ec9a697efbfb636ea6a329) @@ -463,6 +463,25 @@ return mapping.findForward("index"); } + + /** + * Redirects to URL specified in redirectURL parameter. Used by LoginRequest. + */ + public ActionForward redirect(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse res) throws IOException, ServletException { + String redirectUrlParam = request.getParameter("redirectURL"); + if (redirectUrlParam != null) { +// redirectUrlParam = URLDecoder.decode(redirectUrlParam, "UTF8"); + log.info("home.do?method=redirect is requested. Redirecting to " + redirectUrlParam); + res.sendRedirect(redirectUrlParam); + return null; + } + + log.warn("home.do?method=redirect is requested but no redirectURL paramter is provided."); + String defaultUrl = request.getContextPath() + "/index.jsp"; + res.sendRedirect(defaultUrl); + return null; + } private ActionForward displayMessage(ActionMapping mapping, HttpServletRequest req, String messageKey) { req.setAttribute("messageKey", messageKey); Index: lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java =================================================================== diff -u -raa6023fdecba00eb9a7df76e834e681f7d58462d -r2c6d99838a7d029871ec9a697efbfb636ea6a329 --- lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java (.../LoginRequestDispatcher.java) (revision aa6023fdecba00eb9a7df76e834e681f7d58462d) +++ lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java (.../LoginRequestDispatcher.java) (revision 2c6d99838a7d029871ec9a697efbfb636ea6a329) @@ -102,6 +102,8 @@ private static final String URL_LEARNER = "/home.do?method=learner&lessonID="; private static final String URL_MONITOR = "/home.do?method=monitorLesson&lessonID="; + + private static final String URL_REDIRECT = "/home.do?method=redirect"; private static final String URL_GRADEBOOK = "/services/Gradebook?"; @@ -118,18 +120,19 @@ * * @param request * @return + * @throws UnsupportedEncodingException */ - public static String getRequestURL(HttpServletRequest request) throws ServletException { + public static String getRequestURL(HttpServletRequest request) throws ServletException, UnsupportedEncodingException { // get the location from an explicit parameter if it exists - String redirect = request.getParameter("redirectURL"); - if (redirect != null) { + String redirectUrlParam = request.getParameter("redirectURL"); + if (redirectUrlParam != null) { // for NTU Blackboard's based templates, force to https to co-exist with Blackboard - if (redirect.indexOf("ldtemplate") >= 0) { - return "https://" + request.getServerName() + request.getContextPath() + "/" + redirect; + if (redirectUrlParam.indexOf("ldtemplate") >= 0) { + return "https://" + request.getServerName() + request.getContextPath() + "/" + redirectUrlParam; } else { - return request.getContextPath() + "/" + redirect; + return request.getContextPath() + URL_REDIRECT + "&redirectURL=" + URLEncoder.encode(redirectUrlParam, "UTF8"); } }