Skip to content

Commit

Permalink
backport of commit 9c8a742 (#21664)
Browse files Browse the repository at this point in the history
Co-authored-by: Angel Garbarino <Monkeychip@users.noreply.github.com>
  • Loading branch information
1 parent b465b7e commit 7709549
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
3 changes: 3 additions & 0 deletions changelog/21503.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
ui: Surface DOMException error when browser settings prevent localStorage.
```
16 changes: 15 additions & 1 deletion ui/app/lib/local-storage.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
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) {
var item = window.localStorage.getItem(key);
const item = window.localStorage.getItem(key);
return item && JSON.parse(item);
},

Expand Down
4 changes: 4 additions & 0 deletions ui/app/routes/vault/cluster.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Route from '@ember/routing/route';
import { task, timeout } from 'ember-concurrency';
import Ember from 'ember';
import getStorage from '../../lib/token-storage';
import localStorage from 'vault/lib/local-storage';
import ClusterRoute from 'vault/mixins/cluster-route';
import ModelBoundaryRoute from 'vault/mixins/model-boundary-route';

Expand Down Expand Up @@ -82,6 +83,9 @@ export default Route.extend(ModelBoundaryRoute, ClusterRoute, {
},

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);
return this.store.findRecord('cluster', id);
},
Expand Down

0 comments on commit 7709549

Please sign in to comment.