From 06caf382045b621ced3db9739e93d57d01d50cf1 Mon Sep 17 00:00:00 2001
From: Olimpia Magliulo <olimpiam@intern-ikts-MacBook-Air.local>
Date: Thu, 9 Nov 2017 16:37:42 +0100
Subject: [PATCH] Bug fix: change language after login error

As for loginuserpass, fixes a bug that didn't allow to change language after a login error was shown.
---
 modules/core/www/loginuserpassorg.php | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/modules/core/www/loginuserpassorg.php b/modules/core/www/loginuserpassorg.php
index a0931f79b..b853d8ca8 100644
--- a/modules/core/www/loginuserpassorg.php
+++ b/modules/core/www/loginuserpassorg.php
@@ -49,6 +49,14 @@ if (array_key_exists('organization', $_REQUEST)) {
 
 $errorCode = NULL;
 $errorParams = NULL;
+$queryParams = array();
+
+if (isset($state['error'])) {
+    $errorCode = $state['error']['code'];
+    $errorParams = $state['error']['params'];
+    $queryParams = array('AuthState' => $authStateId);
+}
+
 if ($organizations === NULL || !empty($organization)) {
 	if (!empty($username) || !empty($password)) {
 
@@ -66,7 +74,16 @@ if ($organizations === NULL || !empty($organization)) {
 			// Login failed. Extract error code and parameters, to display the error
 			$errorCode = $e->getErrorCode();
 			$errorParams = $e->getParameters();
+            $state['error']= array(
+                'code' => $errorCode,
+                'params' => $errorParams
+            );
+            $authStateId = SimpleSAML_Auth_State::saveState($state, sspmod_core_Auth_UserPassOrgBase::STAGEID);
+            $queryParams = array('AuthState' => $authStateId);
 		}
+        if (isset($state['error'])){
+            unset($state['error']);
+        }
 	}
 }
 
@@ -84,6 +101,10 @@ $t->data['errorcode'] = $errorCode;
 $t->data['errorcodes'] = SimpleSAML\Error\ErrorCodes::getAllErrorCodeMessages();
 $t->data['errorparams'] = $errorParams;
 
+if (!empty($queryParams)) {
+    $t->data['queryParams'] = $queryParams;
+}
+
 if ($organizations !== NULL) {
 	$t->data['selectedOrg'] = $organization;
 	$t->data['organizations'] = $organizations;
-- 
GitLab