From 3c519951c5a719421d5abfa864dfeb6fbce6869d Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Mar 03 2016 16:33:13 +0000 Subject: webui: fail nicely if cookies are disabled Reworks also sessionStorage test because disablement of cookies might be connected with sessionStorage and localStorage. E.g. Chrome raises exception when *Storage is accessed with "Block sites from setting any data" settings set in "Content Settings/Cookies" section. https://fedorahosted.org/freeipa/ticket/4338 Reviewed-By: Tomas Babej --- diff --git a/install/ui/src/freeipa/app_container.js b/install/ui/src/freeipa/app_container.js index 1194fd1..bbe57ac 100644 --- a/install/ui/src/freeipa/app_container.js +++ b/install/ui/src/freeipa/app_container.js @@ -63,14 +63,28 @@ define([ phases.on('init', lang.hitch(this, function() { var deferred = new Deferred(); - if (!window.sessionStorage) { - deferred.reject({ - message: "Web UI requires sessionStorage enabled. " + - "This might be caused by too strict browser " + - "configuration." - }); + + function reject(item) { + var msg = "Web UI requires " + item + " enabled. " + + "Possible cause: too strict browser " + + "configuration."; + deferred.reject({ message: msg }); return deferred.promise; } + + function testStorage(storage) { + try { + if (!window[storage]) return false; + } catch(e) { + return false; + } + return true; + } + + if (!window.navigator.cookieEnabled) return reject('cookies'); + if (!testStorage('sessionStorage')) return reject('sessionStorage'); + if (!testStorage('localStorage')) return reject('localStorage'); + if (window.sessionStorage.getItem('logout')) { window.sessionStorage.removeItem('logout'); var login_facet = reg.facet.get('login');