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