Automatic login attempt is initiated by first failed xhr request which
happens in metadata phase.

New phase was added before metadata phase. It interrupts UI load and shows
login page if it's directly after logout(marked in session storage).
Successfull manual login resolves the phase so that metadata phase can
follow.

https://fedorahosted.org/freeipa/ticket/5008
--
Petr Vobornik
From c31b8a1cb8c931a69748ac25a06b940a318accad Mon Sep 17 00:00:00 2001
From: Petr Vobornik <pvobo...@redhat.com>
Date: Thu, 7 May 2015 19:14:08 +0200
Subject: [PATCH] webui: don't log in back after logout

Automatic login attempt is initiated by first failed xhr request which
happens in metadata phase.

New phase was added before metadata phase. It interrupts UI load and shows
login page if it's directly after logout(marked in session storage).
Successfull manual login resolves the phase so that metadata phase can
follow.

https://fedorahosted.org/freeipa/ticket/5008
---
 install/ui/src/freeipa/app_container.js | 18 +++++++++++++++++-
 install/ui/src/freeipa/ipa.js           |  1 +
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/install/ui/src/freeipa/app_container.js b/install/ui/src/freeipa/app_container.js
index 7f5aacca0758f19ee6209f1b253158266b97aff4..0a49307e31f4875724ee430f32c9483a23c6b51e 100644
--- a/install/ui/src/freeipa/app_container.js
+++ b/install/ui/src/freeipa/app_container.js
@@ -21,13 +21,14 @@
 define([
     'dojo/_base/lang',
     'dojo/Deferred',
+    'dojo/on',
     'dojo/when',
     './plugin_loader',
     './phases',
     './reg',
     './Application_controller',
     'exports'
-],function(lang, Deferred, when, plugin_loader, phases, reg, Application_controller, app) {
+],function(lang, Deferred, on, when, plugin_loader, phases, reg, Application_controller, app) {
 
     /**
      * Application wrapper
@@ -60,6 +61,21 @@ define([
                 return app;
             }));
 
+            phases.on('init', lang.hitch(this, function() {
+                var deferred = new Deferred();
+                if (window.sessionStorage.getItem('logout')) {
+                    window.sessionStorage.removeItem('logout');
+                    var login_facet = reg.facet.get('login');
+                    this.app.show_facet(login_facet);
+                    on.once(login_facet, "logged_in", function() {
+                        deferred.resolve();
+                    });
+                } else {
+                    deferred.resolve();
+                }
+                return deferred.promise;
+            }));
+
             phases.on('metadata', lang.hitch(this, function() {
                 var deferred = new Deferred();
 
diff --git a/install/ui/src/freeipa/ipa.js b/install/ui/src/freeipa/ipa.js
index 836ad689bd82253632c28f54b9a9386996c80b12..75dd73c379815a0e0e1dc2c4d786fdcf3be7c1b0 100644
--- a/install/ui/src/freeipa/ipa.js
+++ b/install/ui/src/freeipa/ipa.js
@@ -409,6 +409,7 @@ IPA.logout = function() {
     }
 
     function reload () {
+        window.sessionStorage.setItem('logout', true);
         var l = window.location;
         l.assign(l.href.split('#')[0]);
     }
-- 
2.1.0

-- 
Manage your subscription for the Freeipa-devel mailing list:
https://www.redhat.com/mailman/listinfo/freeipa-devel
Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code

Reply via email to