[Lada-commits] [PATCH 1 of 4] Merged branch openid back to default
Wald Commits
scm-commit at wald.intevation.org
Mon Mar 23 18:04:15 CET 2015
# HG changeset patch
# User Raimund Renkert <raimund.renkert at intevation.de>
# Date 1426771867 -3600
# Node ID 39dd18124ebd454e0a000223eab339bb5a2cff2c
# Parent 74cc7f086d8364d34852514a350bb1d220448568
# Parent 8756f7e423fbe1afd957898f9d9048adc1c52f47
Merged branch openid back to default.
diff -r 74cc7f086d83 -r 39dd18124ebd app.js
--- a/app.js Thu Mar 19 10:07:39 2015 +0100
+++ b/app.js Thu Mar 19 14:31:07 2015 +0100
@@ -23,6 +23,7 @@
// found on https://github.com/elmasse/Ext.i18n.Bundle
requires: [
'Lada.override.Table',
+ 'Lada.override.RestProxy',
'Lada.override.RowEditor',
'Ext.i18n.Bundle',
'Ext.layout.container.Column',
@@ -49,10 +50,59 @@
// Setting this variable to true triggers loading the Viewport.js
// file which sets ob the viewport.
- autoCreateViewport: true,
+ //autoCreateViewport: true,
// Start the application.
launch: function() {
+ var queryString = document.location.href.split('?')[1];
+ if (queryString) {
+ Lada.openIDParams = queryString;
+ }
+ Ext.Ajax.request({
+ url: 'lada-server/login?return_to=' + window.location.href,
+ method: 'GET',
+ headers: {
+ 'X-OPENID-PARAMS': Lada.openIDParams
+ },
+ scope: this,
+ success: this.onLoginSuccess,
+ failure: this.onLoginFailure
+ });
+ },
+
+ onLoginFailure: function(response) {
+ try {
+ var json = Ext.decode(response.responseText);
+ if (json) {
+ if (json.message === '699') {
+ /* This is the unauthorized message with the authentication
+ * redirect in the data */
+ var authUrl = json.data;
+ location.href = authUrl;
+ return;
+ }
+ if (json.message === '698') {
+ /* This is general authentication error */
+ Ext.MessageBox.alert('Kommunikation mit dem Login Server fehlgeschlagen',
+ json.data);
+ return;
+ }
+ }
+ }
+ catch (e) {
+ // This is likely a 404 or some unknown error. Show general error then.
+ }
+ Ext.MessageBox.alert('Kommunikation mit dem Lada Server fehlgeschlagen',
+ 'Es konnte keine erfolgreiche Verbindung zum lada server aufgebaut werden.');
+ },
+
+ onLoginSuccess: function() {
+ /* Strip out the openid query params to look nicers. */
+ window.history.pushState(this.name, this.name, window.location.pathname);
+
+ Ext.create('Lada.view.Viewport');
+
+ /* Todo maybe parse username and such from login service response */
Ext.create('Lada.store.Datenbasis', {
storeId: 'datenbasis'
});
diff -r 74cc7f086d83 -r 39dd18124ebd app/override/RestProxy.js
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/override/RestProxy.js Thu Mar 19 14:31:07 2015 +0100
@@ -0,0 +1,45 @@
+/* Copyright (C) 2015 by Bundesamt fuer Strahlenschutz
+ * Software engineering by Intevation GmbH
+ *
+ * This file is Free Software under the GNU GPL (v>=3)
+ * and comes with ABSOLUTELY NO WARRANTY! Check out
+ * the documentation coming with IMIS-Labordaten-Application for details.
+ */
+
+Ext.define('Lada.override.RestProxy', {
+ override: 'Ext.data.proxy.Rest',
+
+ buildRequest: function (operation) {
+ this.headers = { 'X-OPENID-PARAMS': Lada.openIDParams };
+ return this.callParent(arguments);
+ },
+
+ 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 (Lada.openIDParams && !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 */
+
+ /* 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?', this.reload);
+ }
+ }
+ }
+ this.callParent(arguments);
+ },
+ reload: function(btn) {
+ if (btn === 'yes') {
+ location.reload();
+ }
+ }
+});
More information about the Lada-commits
mailing list