Index: lams_central/src/java/org/lamsfoundation/lams/web/SIFOpenIDServlet.java =================================================================== diff -u -r5dbfb5efb912463b3d587a1c0f63a08ac04dfe17 -r82db28189db82b0d3f130a4ea58d48f32fec8b7e --- lams_central/src/java/org/lamsfoundation/lams/web/SIFOpenIDServlet.java (.../SIFOpenIDServlet.java) (revision 5dbfb5efb912463b3d587a1c0f63a08ac04dfe17) +++ lams_central/src/java/org/lamsfoundation/lams/web/SIFOpenIDServlet.java (.../SIFOpenIDServlet.java) (revision 82db28189db82b0d3f130a4ea58d48f32fec8b7e) @@ -66,6 +66,8 @@ // Check if the user is not already logged in HttpSession session = request.getSession(true); String loggedInAs = OpenIdFilter.getCurrentUser(session); + + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID, true); if (openIDEnabled != null && Boolean.parseBoolean(openIDEnabled.getConfigValue())) { if (loggedInAs == null) { @@ -76,7 +78,7 @@ redirectToPortal(response, messageService.getMessage(ERROR_KEY_NO_ID_PASSED)); } else { - String returnURL = UrlUtils.getBaseUrl(request) + "/OpenIDServlet"; + String returnURL = UrlUtils.getBaseUrl(request) + "/OpenIDServlet?lessonID=" + lessonID; sendAuthenticationRequest(response, userOpenIDURL, returnURL, UrlUtils.getBaseUrl(request)); } } else { Index: lams_common/src/java/org/lamsfoundation/lams/integration/security/LoginRequestValve.java =================================================================== diff -u -rab19db088359a46353cc92e806c40ff5cff818b9 -r82db28189db82b0d3f130a4ea58d48f32fec8b7e --- lams_common/src/java/org/lamsfoundation/lams/integration/security/LoginRequestValve.java (.../LoginRequestValve.java) (revision ab19db088359a46353cc92e806c40ff5cff818b9) +++ lams_common/src/java/org/lamsfoundation/lams/integration/security/LoginRequestValve.java (.../LoginRequestValve.java) (revision 82db28189db82b0d3f130a4ea58d48f32fec8b7e) @@ -21,7 +21,6 @@ package org.lamsfoundation.lams.integration.security; import java.io.IOException; -import java.net.URLDecoder; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -36,6 +35,8 @@ import org.apache.catalina.valves.ValveBase; import org.apache.log4j.Logger; import org.lamsfoundation.lams.integration.util.LoginRequestDispatcher; +import org.lamsfoundation.lams.util.WebUtil; +import org.lamsfoundation.lams.web.util.AttributeNames; /** * When j_security_check authentication is successful the user is redirected to the original requested URL. The @@ -149,12 +150,23 @@ HttpSession hses = hreq.getSession(false); log.debug("Session Id - " + hses.getId()); + + Long lessonID = WebUtil.readLongParam(request, AttributeNames.PARAM_LESSON_ID, true); // check required parameters if (hses != null) { log.info("OPENID REQUEST DETECTED - LOGIN SUCCESSFUL"); - String relURL = request.getContextPath() + "/index.do"; + String relURL; + + if (lessonID != null) { + // Launch learner + relURL = request.getContextPath() + "/launchlearner.do?" + AttributeNames.PARAM_LESSON_ID +"=" + lessonID; + } else { + // Go to LAMS home + relURL = request.getContextPath() + "/index.do"; + } + log.debug("Redirect URL - " + relURL); // create catalina internal session