From f972225a847b228071e3b22644ef7a2e23edd7c6 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 3 Aug 2012 09:29:52 +0200 Subject: [PATCH] OMA-17: fix an issue where the window are not registred during the single sign-on process --- src/main/java/org/olat/core/util/UserSession.java | 2 -- .../java/org/olat/dispatcher/RESTDispatcher.java | 12 ++++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/olat/core/util/UserSession.java b/src/main/java/org/olat/core/util/UserSession.java index da43de2c8ca..ced1f0f9043 100644 --- a/src/main/java/org/olat/core/util/UserSession.java +++ b/src/main/java/org/olat/core/util/UserSession.java @@ -44,7 +44,6 @@ import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; -import org.apache.log4j.Logger; import org.olat.core.commons.persistence.DBFactory; import org.olat.core.gui.UserRequest; import org.olat.core.gui.control.Disposable; @@ -115,7 +114,6 @@ public class UserSession implements HttpSessionBindingListener, GenericEventList //usersession is listening for SignOnOffEvents from other clusternodes CoordinatorManager.getInstance().getCoordinator().getEventBus().registerFor(this, null, ORES_USERSESSION); registeredWithBus = true; - Logger.getLogger(getClass().getName()).debug("UserSession<init> END"); } /** diff --git a/src/main/java/org/olat/dispatcher/RESTDispatcher.java b/src/main/java/org/olat/dispatcher/RESTDispatcher.java index f2dbb0ec055..1afa78dda67 100644 --- a/src/main/java/org/olat/dispatcher/RESTDispatcher.java +++ b/src/main/java/org/olat/dispatcher/RESTDispatcher.java @@ -190,7 +190,11 @@ public class RESTDispatcher implements Dispatcher { } else if (Windows.getWindows(usess).getAttribute("AUTHCHIEFCONTROLLER") == null) { // Session is already available, but no main window (Head-less REST // session). Only create the base chief controller and the window - AuthHelper.createAuthHome(ureq); + Window currentWindow = AuthHelper.createAuthHome(ureq).getWindow(); + //the user is authenticated successfully with a security token, we can set the authenticated path + currentWindow.setUriPrefix(WebappHelper.getServletContextPath() + DispatcherAction.PATH_AUTHENTICATED); + Windows ws = Windows.getWindows(ureq); + ws.registerWindow(currentWindow); // no need to call setIdentityAsActive as this was already done by RestApiLoginFilter... } } @@ -293,11 +297,11 @@ public class RESTDispatcher implements Dispatcher { private String getRedirectToURL(UserSession usess) { ChiefController cc = (ChiefController) Windows.getWindows(usess).getAttribute("AUTHCHIEFCONTROLLER"); Window w = cc.getWindow(); - - URLBuilder ubu = new URLBuilder("", w.getInstanceId(), String.valueOf(w.getTimestamp()), null); + + URLBuilder ubu = new URLBuilder(WebappHelper.getServletContextPath() + DispatcherAction.PATH_AUTHENTICATED, w.getInstanceId(), String.valueOf(w.getTimestamp()), null); StringOutput sout = new StringOutput(30); ubu.buildURI(sout, null, null); - return WebappHelper.getServletContextPath() + DispatcherAction.PATH_AUTHENTICATED + sout.toString(); + return sout.toString(); } } -- GitLab