backport of commit 9c8a7422ade1b46f413274c5eb6d5306c9e3e563 (#21665)
Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com>
This commit is contained in:
parent
93d2fc099f
commit
ec7e69adc0
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
ui: Surface DOMException error when browser settings prevent localStorage.
|
||||||
|
```
|
|
@ -4,8 +4,22 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
isLocalStorageSupported() {
|
||||||
|
try {
|
||||||
|
const key = `__storage__test`;
|
||||||
|
window.localStorage.setItem(key, null);
|
||||||
|
window.localStorage.removeItem(key);
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
// modify the e object so we can customize the error message.
|
||||||
|
// e.message is readOnly.
|
||||||
|
e.errors = [`This is likely due to your browser's cookie settings.`];
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
getItem(key) {
|
getItem(key) {
|
||||||
var item = window.localStorage.getItem(key);
|
const item = window.localStorage.getItem(key);
|
||||||
return item && JSON.parse(item);
|
return item && JSON.parse(item);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@ import Route from '@ember/routing/route';
|
||||||
import { task, timeout } from 'ember-concurrency';
|
import { task, timeout } from 'ember-concurrency';
|
||||||
import Ember from 'ember';
|
import Ember from 'ember';
|
||||||
import getStorage from '../../lib/token-storage';
|
import getStorage from '../../lib/token-storage';
|
||||||
|
import localStorage from 'vault/lib/local-storage';
|
||||||
import ClusterRoute from 'vault/mixins/cluster-route';
|
import ClusterRoute from 'vault/mixins/cluster-route';
|
||||||
import ModelBoundaryRoute from 'vault/mixins/model-boundary-route';
|
import ModelBoundaryRoute from 'vault/mixins/model-boundary-route';
|
||||||
|
|
||||||
|
@ -87,6 +88,9 @@ export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
|
||||||
},
|
},
|
||||||
|
|
||||||
model(params) {
|
model(params) {
|
||||||
|
// if a user's browser settings block localStorage they will be unable to use Vault. The method will throw the error and the rest of the application will not load.
|
||||||
|
localStorage.isLocalStorageSupported();
|
||||||
|
|
||||||
const id = this.getClusterId(params);
|
const id = this.getClusterId(params);
|
||||||
return this.store.findRecord('cluster', id);
|
return this.store.findRecord('cluster', id);
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue