diff --git a/assets/app/scripts/app.js b/assets/app/scripts/app.js index 39121279f732..c80fb38ae6de 100644 --- a/assets/app/scripts/app.js +++ b/assets/app/scripts/app.js @@ -135,8 +135,8 @@ angular $httpProvider.interceptors.push('AuthInterceptor'); AuthServiceProvider.LoginService('RedirectLoginService'); - // TODO: fall back to cookie store when session storage is unavailable (see known issues at http://caniuse.com/#search=sessionstorage) - AuthServiceProvider.UserStore('SessionUserStore'); + // TODO: fall back to cookie store when localStorage is unavailable (see known issues at http://caniuse.com/#feat=namevalue-storage) + AuthServiceProvider.UserStore('LocalStorageUserStore'); var authcfg = window.OPENSHIFT_CONFIG.auth; RedirectLoginServiceProvider.OAuthClientID(authcfg.oauth_client_id); diff --git a/assets/app/scripts/services/auth.js b/assets/app/scripts/services/auth.js index fdcec5d82609..23d69ba5f381 100644 --- a/assets/app/scripts/services/auth.js +++ b/assets/app/scripts/services/auth.js @@ -1,6 +1,6 @@ angular.module('openshiftConsole') // In a config step, set the desired user store and login service. For example: -// AuthServiceProvider.setUserStore('SessionUserStore') +// AuthServiceProvider.setUserStore('LocalStorageUserStore') // AuthServiceProvider.setLoginService('RedirectLoginService') // // AuthService provides the following functions: diff --git a/assets/app/scripts/services/userstore.js b/assets/app/scripts/services/userstore.js index 81811acb7966..295032993330 100644 --- a/assets/app/scripts/services/userstore.js +++ b/assets/app/scripts/services/userstore.js @@ -6,69 +6,141 @@ angular.module('openshiftConsole') var _user = null; var _token = null; return { + available: function() { + return true; + }, getUser: function(){ - if (debug) { console.log("MemoryUserStore.getUser", _user); } + if (debug) { console.log("MemoryUserStore.getUser", _user); } return _user; }, setUser: function(user) { - if (debug) { console.log("MemoryUserStore.setUser", user); } + if (debug) { console.log("MemoryUserStore.setUser", user); } _user = user; }, getToken: function() { - if (debug) { console.log("MemoryUserStore.getToken", _token); } + if (debug) { console.log("MemoryUserStore.getToken", _token); } return _token; }, setToken: function(token) { - if (debug) { console.log("MemoryUserStore.setToken", token); } + if (debug) { console.log("MemoryUserStore.setToken", token); } _token = token; } } }; }) -.provider('SessionUserStore', function() { +.provider('SessionStorageUserStore', function() { this.$get = function(){ var debug = false; - var userkey = "user"; - var tokenkey = "token"; + var userkey = "SessionStorageUserStore.user"; + var tokenkey = "SessionStorageUserStore.token"; return { + available: function() { + try { + var x = new Date().getTime(); + sessionStorage['SessionStorageUserStore.test'] = x; + var y = sessionStorage['SessionStorageUserStore.test']; + sessionStorage.removeItem('SessionStorageUserStore.test'); + return x == y; + } catch(e) { + return false; + } + }, getUser: function(){ try { var user = JSON.parse(sessionStorage[userkey]); - if (debug) { console.log("SessionUserStore.getUser", user); } + if (debug) { console.log("SessionStorageUserStore.getUser", user); } return user; } catch(e) { - if (debug) { console.log("SessionUserStore.getUser", e); } + if (debug) { console.log("SessionStorageUserStore.getUser", e); } return null; } }, setUser: function(user) { if (user) { - if (debug) { console.log("SessionUserStore.setUser", user); } + if (debug) { console.log("SessionStorageUserStore.setUser", user); } sessionStorage[userkey] = JSON.stringify(user); } else { - if (debug) { console.log("SessionUserStore.setUser", user, "deleting"); } + if (debug) { console.log("SessionStorageUserStore.setUser", user, "deleting"); } sessionStorage.removeItem(userkey); } }, getToken: function() { try { var token = sessionStorage[tokenkey]; - if (debug) { console.log("SessionUserStore.getToken", token); } + if (debug) { console.log("SessionStorageUserStore.getToken", token); } return token; } catch(e) { - if (debug) { console.log("SessionUserStore.getToken", e); } + if (debug) { console.log("SessionStorageUserStore.getToken", e); } return null; } }, setToken: function(token) { if (token) { - if (debug) { console.log("SessionUserStore.setToken", token); } + if (debug) { console.log("SessionStorageUserStore.setToken", token); } sessionStorage[tokenkey] = token; } else { - if (debug) { console.log("SessionUserStore.setToken", token, "deleting"); } + if (debug) { console.log("SessionStorageUserStore.setToken", token, "deleting"); } sessionStorage.removeItem(tokenkey); } } } }; +}) +.provider('LocalStorageUserStore', function() { + this.$get = function(){ + var debug = false; + var userkey = "LocalStorageUserStore.user"; + var tokenkey = "LocalStorageUserStore.token"; + return { + available: function() { + try { + var x = new Date().getTime(); + localStorage['LocalStorageUserStore.test'] = x; + var y = localStorage['LocalStorageUserStore.test']; + localStorage.removeItem('LocalStorageUserStore.test'); + return x == y; + } catch(e) { + return false; + } + }, + getUser: function(){ + try { + var user = JSON.parse(localStorage[userkey]); + if (debug) { console.log("LocalStorageUserStore.getUser", user); } + return user; + } catch(e) { + if (debug) { console.log("LocalStorageUserStore.getUser", e); } + return null; + } + }, + setUser: function(user) { + if (user) { + if (debug) { console.log("LocalStorageUserStore.setUser", user); } + localStorage[userkey] = JSON.stringify(user); + } else { + if (debug) { console.log("LocalStorageUserStore.setUser", user, "deleting"); } + localStorage.removeItem(userkey); + } + }, + getToken: function() { + try { + var token = localStorage[tokenkey]; + if (debug) { console.log("LocalStorageUserStore.getToken", token); } + return token; + } catch(e) { + if (debug) { console.log("LocalStorageUserStore.getToken", e); } + return null; + } + }, + setToken: function(token) { + if (token) { + if (debug) { console.log("LocalStorageUserStore.setToken", token); } + localStorage[tokenkey] = token; + } else { + if (debug) { console.log("LocalStorageUserStore.setToken", token, "deleting"); } + localStorage.removeItem(tokenkey); + } + } + } + }; }); diff --git a/pkg/assets/bindata.go b/pkg/assets/bindata.go index 5b936fd45b0a..b2e83f8c47ab 100644 --- a/pkg/assets/bindata.go +++ b/pkg/assets/bindata.go @@ -12467,7 +12467,7 @@ redirectTo:"/" }); } ]).config([ "$httpProvider", "AuthServiceProvider", "RedirectLoginServiceProvider", function(a, b, c) { if (window.OPENSHIFT_CONFIG) { -a.interceptors.push("AuthInterceptor"), b.LoginService("RedirectLoginService"), b.UserStore("SessionUserStore"); +a.interceptors.push("AuthInterceptor"), b.LoginService("RedirectLoginService"), b.UserStore("LocalStorageUserStore"); var d = window.OPENSHIFT_CONFIG.auth; c.OAuthClientID(d.oauth_client_id), c.OAuthAuthorizeURI(d.oauth_authorize_uri), c.OAuthRedirectURI(d.oauth_redirect_base + "/oauth"); } @@ -12504,6 +12504,9 @@ return !!WebSocket; this.$get = function() { var a = !1, b = null, c = null; return { +available:function() { +return !0; +}, getUser:function() { return a && console.log("MemoryUserStore.getUser", b), b; }, @@ -12518,31 +12521,79 @@ a && console.log("MemoryUserStore.setToken", b), c = b; } }; }; -}).provider("SessionUserStore", function() { +}).provider("SessionStorageUserStore", function() { this.$get = function() { -var a = !1, b = "user", c = "token"; +var a = !1, b = "SessionStorageUserStore.user", c = "SessionStorageUserStore.token"; return { +available:function() { +try { +var a = new Date().getTime(); +sessionStorage["SessionStorageUserStore.test"] = a; +var b = sessionStorage["SessionStorageUserStore.test"]; +return sessionStorage.removeItem("SessionStorageUserStore.test"), a == b; +} catch (c) { +return !1; +} +}, getUser:function() { try { var c = JSON.parse(sessionStorage[b]); -return a && console.log("SessionUserStore.getUser", c), c; +return a && console.log("SessionStorageUserStore.getUser", c), c; } catch (d) { -return a && console.log("SessionUserStore.getUser", d), null; +return a && console.log("SessionStorageUserStore.getUser", d), null; } }, setUser:function(c) { -c ? (a && console.log("SessionUserStore.setUser", c), sessionStorage[b] = JSON.stringify(c)) :(a && console.log("SessionUserStore.setUser", c, "deleting"), sessionStorage.removeItem(b)); +c ? (a && console.log("SessionStorageUserStore.setUser", c), sessionStorage[b] = JSON.stringify(c)) :(a && console.log("SessionStorageUserStore.setUser", c, "deleting"), sessionStorage.removeItem(b)); }, getToken:function() { try { var b = sessionStorage[c]; -return a && console.log("SessionUserStore.getToken", b), b; +return a && console.log("SessionStorageUserStore.getToken", b), b; +} catch (d) { +return a && console.log("SessionStorageUserStore.getToken", d), null; +} +}, +setToken:function(b) { +b ? (a && console.log("SessionStorageUserStore.setToken", b), sessionStorage[c] = b) :(a && console.log("SessionStorageUserStore.setToken", b, "deleting"), sessionStorage.removeItem(c)); +} +}; +}; +}).provider("LocalStorageUserStore", function() { +this.$get = function() { +var a = !1, b = "LocalStorageUserStore.user", c = "LocalStorageUserStore.token"; +return { +available:function() { +try { +var a = new Date().getTime(); +localStorage["LocalStorageUserStore.test"] = a; +var b = localStorage["LocalStorageUserStore.test"]; +return localStorage.removeItem("LocalStorageUserStore.test"), a == b; +} catch (c) { +return !1; +} +}, +getUser:function() { +try { +var c = JSON.parse(localStorage[b]); +return a && console.log("LocalStorageUserStore.getUser", c), c; +} catch (d) { +return a && console.log("LocalStorageUserStore.getUser", d), null; +} +}, +setUser:function(c) { +c ? (a && console.log("LocalStorageUserStore.setUser", c), localStorage[b] = JSON.stringify(c)) :(a && console.log("LocalStorageUserStore.setUser", c, "deleting"), localStorage.removeItem(b)); +}, +getToken:function() { +try { +var b = localStorage[c]; +return a && console.log("LocalStorageUserStore.getToken", b), b; } catch (d) { -return a && console.log("SessionUserStore.getToken", d), null; +return a && console.log("LocalStorageUserStore.getToken", d), null; } }, setToken:function(b) { -b ? (a && console.log("SessionUserStore.setToken", b), sessionStorage[c] = b) :(a && console.log("SessionUserStore.setToken", b, "deleting"), sessionStorage.removeItem(c)); +b ? (a && console.log("LocalStorageUserStore.setToken", b), localStorage[c] = b) :(a && console.log("LocalStorageUserStore.setToken", b, "deleting"), localStorage.removeItem(c)); } }; };