# HG changeset patch # User Dustin Demuth # Date 1439551670 -7200 # Node ID f220ba587c89b8889647a692e281647a1a254bc6 # Parent c8599a543f03822702ec8470f91f468aa5766774 Adopted Client to SSO, detect a Sessiontimeout and reload the application diff -r c8599a543f03 -r f220ba587c89 app/controller/FilterResult.js --- a/app/controller/FilterResult.js Fri Aug 14 10:34:53 2015 +0200 +++ b/app/controller/FilterResult.js Fri Aug 14 13:27:50 2015 +0200 @@ -170,34 +170,32 @@ method: 'POST', url: 'lada-server/export/laf', jsonData: {'proben': proben}, - headers: {'X-OPENID-PARAMS': Lada.openIDParams}, success: function(response) { var content = response.responseText; var blob = new Blob([content],{type: 'text/plain'}); saveAs(blob, 'export.laf'); }, failure: function(response) { + /* + SSO will send a 302 if the Client is not authenticated + unfortunately this seems to be filtered by the browser. + We assume that a 302 was send when the follwing statement + is true. + */ + if (response.status == 0 && response.responseText === "") { + Ext.MessageBox.confirm('Erneutes Login erforderlich', + 'Ihre Session ist abgelaufen.
'+ + 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + + 'Alle ungesicherten Daten gehen dabei verloren.
' + + 'Soll die Anwendung jetzt neu geladen werden?', this.reload); + } + // further error handling var json = Ext.JSON.decode(response.responseText); if (json) { if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){ formPanel.setMessages(json.errors, json.warnings); } - // TODO Move this handling of 699 and 698 to a more central place! - // TODO i18n - if (json.message === "699" || json.message === "698") { - /* This is the unauthorized message with the authentication - * redirect in the data */ - - /* We decided to handle this with a redirect to the identity - * provider. In which case we have no other option then to - * handle it here with relaunch. */ - Ext.MessageBox.confirm('Erneutes Login erforderlich', - 'Der Server konnte die Anfrage nicht authentifizieren.
'+ - 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + - 'Alle ungesicherten Daten gehen dabei verloren.
' + - 'Soll die Anwendung jetzt neu geladen werden?', me.reload); - } - else if(json.message){ + if(json.message){ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.generic.title') +' #'+json.message, Lada.getApplication().bundle.getMsg(json.message)); diff -r c8599a543f03 -r f220ba587c89 app/override/RestProxy.js --- a/app/override/RestProxy.js Fri Aug 14 10:34:53 2015 +0200 +++ b/app/override/RestProxy.js Fri Aug 14 13:27:50 2015 +0200 @@ -1,4 +1,4 @@ -/* Copyright (C) 2015 by Bundesamt fuer Strahlenschutz +/* Copyrighte(C) 2015 by Bundesamt fuer Strahlenschutz * Software engineering by Intevation GmbH * * This file is Free Software under the GNU GPL (v>=3) @@ -15,26 +15,25 @@ }, */ processResponse: function (success, operation, request, response, callback, scope) { - /* Check if we were authenticated at one point (Lada.openIDParams) and - * if the response means that we lost that authentcation */ - if (!success && response.status == 401) { - var json = Ext.decode(response.responseText); - if (json) { - if (json.message === "699" || json.message === "698") { - /* This is the unauthorized message with the authentication - * redirect in the data */ + /* + SSO will send a 302 if the Client is not authenticated + unfortunately this seems to be filtered by the browser. + We assume that a 302 was send when the follwing statement + is true. + */ + if (!success && response.status == 0 && response.responseText === "") { + Ext.MessageBox.confirm('Erneutes Login erforderlich', + 'Ihre Session ist abgelaufen.
'+ + 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + + 'Alle ungesicherten Daten gehen dabei verloren.
' + + 'Soll die Anwendung jetzt neu geladen werden?', this.reload); + } + this.callParent(arguments); + }, - /* We decided to handle this with a redirect to the identity - * provider. In which case we have no other option then to - * handle it here with relaunch. */ - Ext.MessageBox.confirm('Erneutes Login erforderlich', - 'Ihre Session ist abgelaufen.
'+ - 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + - 'Alle ungesicherten Daten gehen dabei verloren.
' + - 'Soll die Anwendung jetzt neu geladen werden?', this.reload); - } - } - } + + parseStatus: function(status) { + console.log(status); this.callParent(arguments); }, diff -r c8599a543f03 -r f220ba587c89 app/view/window/DeleteProbe.js --- a/app/view/window/DeleteProbe.js Fri Aug 14 10:34:53 2015 +0200 +++ b/app/view/window/DeleteProbe.js Fri Aug 14 13:27:50 2015 +0200 @@ -53,9 +53,6 @@ //TODO Use correct URLs url: 'lada-server/probe/'+me.record.get('id'), method: 'DELETE', - headers: { - 'X-OPENID-PARAMS': Lada.openIDParams - }, success: function(response) { var json = Ext.JSON.decode(response.responseText); if (json.success && json.message === '200') { @@ -88,22 +85,21 @@ if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){ formPanel.setMessages(json.errors, json.warnings); } - // TODO Move this handling of 699 and 698 to a more central place! - // TODO i18n - if (json.message === "699" || json.message === "698") { - /* This is the unauthorized message with the authentication - * redirect in the data */ - - /* We decided to handle this with a redirect to the identity - * provider. In which case we have no other option then to - * handle it here with relaunch. */ + /* + SSO will send a 302 if the Client is not authenticated + unfortunately this seems to be filtered by the browser. + We assume that a 302 was send when the follwing statement + is true. + */ + if (response.status == 0 && response.responseText === "") { Ext.MessageBox.confirm('Erneutes Login erforderlich', - 'Der Server konnte die Anfrage nicht authentifizieren.
'+ + 'Ihre Session ist abgelaufen.
'+ 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + 'Alle ungesicherten Daten gehen dabei verloren.
' + - 'Soll die Anwendung jetzt neu geladen werden?', me.reload); + 'Soll die Anwendung jetzt neu geladen werden?', this.reload); } - else if(json.message){ + // further error handling + if(json.message){ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.generic.title') +' #'+json.message, Lada.getApplication().bundle.getMsg(json.message)); diff -r c8599a543f03 -r f220ba587c89 app/view/window/GenProbenFromMessprogramm.js --- a/app/view/window/GenProbenFromMessprogramm.js Fri Aug 14 10:34:53 2015 +0200 +++ b/app/view/window/GenProbenFromMessprogramm.js Fri Aug 14 13:27:50 2015 +0200 @@ -58,9 +58,6 @@ Ext.Ajax.request({ url: 'lada-server/probe/messprogramm', method: 'POST', - headers: { - 'X-OPENID-PARAMS': Lada.openIDParams - }, jsonData: jsondata, success: function(response) { var json = Ext.JSON.decode(response.responseText); @@ -85,22 +82,21 @@ if(json.errors.totalCount > 0 || json.warnings.totalCount > 0){ formPanel.setMessages(json.errors, json.warnings); } - // TODO Move this handling of 699 and 698 to a more central place! - // TODO i18n - if (json.message === "699" || json.message === "698") { - /* This is the unauthorized message with the authentication - * redirect in the data */ - - /* We decided to handle this with a redirect to the identity - * provider. In which case we have no other option then to - * handle it here with relaunch. */ + /* + SSO will send a 302 if the Client is not authenticated + unfortunately this seems to be filtered by the browser. + We assume that a 302 was send when the follwing statement + is true. + */ + if (response.status == 0 && response.responseText === "") { Ext.MessageBox.confirm('Erneutes Login erforderlich', - 'Der Server konnte die Anfrage nicht authentifizieren.
'+ + 'Ihre Session ist abgelaufen.
'+ 'Für ein erneutes Login muss die Anwendung neu geladen werden.
' + 'Alle ungesicherten Daten gehen dabei verloren.
' + - 'Soll die Anwendung jetzt neu geladen werden?', me.reload); + 'Soll die Anwendung jetzt neu geladen werden?', this.reload); } - else if(json.message){ + // further error handling + if(json.message){ Ext.Msg.alert(Lada.getApplication().bundle.getMsg('err.msg.generic.title') +' #'+json.message, Lada.getApplication().bundle.getMsg(json.message));