Index: lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java,v diff -u -r1.74 -r1.75 --- lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java 27 Jun 2016 08:21:24 -0000 1.74 +++ lams_central/src/java/org/lamsfoundation/lams/web/HomeAction.java 27 Jul 2016 16:45:00 -0000 1.75 @@ -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 =================================================================== RCS file: /usr/local/cvsroot/lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java,v diff -u -r1.23 -r1.24 --- lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java 5 May 2016 08:11:37 -0000 1.23 +++ lams_common/src/java/org/lamsfoundation/lams/integration/util/LoginRequestDispatcher.java 27 Jul 2016 16:45:02 -0000 1.24 @@ -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"); } }