[Lada-commits] [PATCH 1 of 3] Adopted Client to SSO, detect a Sessiontimeout and reload the application

Wald Commits scm-commit at wald.intevation.org
Fri Aug 14 13:31:54 CEST 2015


# HG changeset patch
# User Dustin Demuth <dustin at intevation.de>
# 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.<br/>'+
+                        'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
+                        'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
+                        '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.<br/>'+
-                            'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
-                            'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
-                            '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.<br/>'+
+                'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
+                'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
+                '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.<br/>'+
-                        'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
-                        'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
-                        '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.<br/>'+
+                                    'Ihre Session ist abgelaufen.<br/>'+
                                     'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
                                     'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
-                                    '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.<br/>'+
+                                    'Ihre Session ist abgelaufen.<br/>'+
                                     'Für ein erneutes Login muss die Anwendung neu geladen werden.<br/>' +
                                     'Alle ungesicherten Daten gehen dabei verloren.<br/>' +
-                                    '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));


More information about the Lada-commits mailing list