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

Reviewed-By: Martin Basti <mbasti@redhat.com>
This commit is contained in:
Petr Vobornik 2015-05-07 19:14:08 +02:00
parent 355b6d416d
commit cd5fe9b407
2 changed files with 18 additions and 1 deletions

View File

@ -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();

View File

@ -409,6 +409,7 @@ IPA.logout = function() {
}
function reload () {
window.sessionStorage.setItem('logout', true);
var l = window.location;
l.assign(l.href.split('#')[0]);
}