From 5efaa5e9df399e567e525688d94d0afc463c0440 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Wed, 25 Jul 2012 17:18:55 +0200
Subject: [PATCH] OO-146: do a proper redirect after the logout to prevent an
 invisible red screen

---
 .../java/org/olat/user/ChangePrefsController.java    | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/main/java/org/olat/user/ChangePrefsController.java b/src/main/java/org/olat/user/ChangePrefsController.java
index d4433cb9b4e..ab7f1840770 100644
--- a/src/main/java/org/olat/user/ChangePrefsController.java
+++ b/src/main/java/org/olat/user/ChangePrefsController.java
@@ -41,12 +41,15 @@ import org.olat.core.gui.control.Controller;
 import org.olat.core.gui.control.Event;
 import org.olat.core.gui.control.WindowControl;
 import org.olat.core.gui.control.controller.BasicController;
+import org.olat.core.gui.media.RedirectMediaResource;
 import org.olat.core.id.Identity;
 import org.olat.core.util.UserSession;
+import org.olat.core.util.WebappHelper;
 import org.olat.core.id.User;
 import org.olat.core.id.context.HistoryManager;
 import org.olat.core.id.context.HistoryModule;
 import org.olat.core.util.StringHelper;
+import org.olat.core.util.i18n.I18nManager;
 import org.olat.core.util.prefs.Preferences;
 import org.olat.core.util.prefs.PreferencesFactory;
 import org.olat.properties.PropertyManager;
@@ -333,11 +336,13 @@ class UserPrefsResetForm extends FormBasicController {
 	protected void formOK(UserRequest ureq) {
 		if (resetElements.isAtLeastSelected(1)) {
 			// Log out user first if logged in
+			boolean logout = false;
 			Set<UserSession> sessions = UserSession.getAuthenticatedUserSessions();
 			for (UserSession session : sessions) {
 				Identity ident = session.getIdentity();
 				if (ident != null && tobeChangedIdentity.equalsByPersistableKey(ident)) {
 					session.signOffAndClear();
+					logout = true;
 					break;
 				}
 			}
@@ -365,6 +370,13 @@ class UserPrefsResetForm extends FormBasicController {
 			}
 			// reset form buttons
 			resetElements.uncheckAll();
+			
+			if(logout) {
+				//if logout, need a redirect to the login page
+				String lang = I18nManager.getInstance().getLocaleKey(ureq.getLocale());
+				ureq.getDispatchResult().setResultingMediaResource(
+						new RedirectMediaResource(WebappHelper.getServletContextPath() + "/dmz/?lang=" + lang + "&logout=true"));
+			}
 		}
 	}
 	
-- 
GitLab