summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjkornobis <jkornobis@linagora.com>2012-10-30 15:08:49 +0100
committerjkornobis <jkornobis@linagora.com>2012-10-30 15:08:49 +0100
commitd2d00c510be0974fe2ec2b8d926cb00b25686083 (patch)
tree2b5b90d5885e2278b61f1da048fe7837b85dd344
parent72e7eb826ddb1c2e38b6f727e26170708b5976e0 (diff)
Grancefully handle SSO redirections on Ajax requests
On some SSO systems, when the SSO session is expired, the system intercept HTTP requests and send a 302 "Found" HTTP code to the login page. This patch handle this case in Roundcube Ajax requests, to redirect to the SSO login page. Note that request.status don't have the 302 code (at least on Firefox), so we have to check the response headers for a Location field and redirect manually.
-rw-r--r--program/js/app.js5
1 files changed, 5 insertions, 0 deletions
diff --git a/program/js/app.js b/program/js/app.js
index 3335d945c..b3c5fba25 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -6141,6 +6141,11 @@ function rcube_webmail()
else if (request.status == 0 && status != 'abort')
this.display_message(this.get_label('servererror') + ' (No connection)', 'error');
+ // redirect to url specified in location header if not empty
+ var location_url = request.getResponseHeader("Location");
+ if (location_url != '')
+ this.redirect(location_url);
+
// re-send keep-alive requests after 30 seconds
if (action == 'keep-alive')
setTimeout(function(){ ref.keep_alive(); }, 30000);