diff options
author | Sorin Sbarnea <ssbarnea@redhat.com> | 2020-07-06 11:06:50 +0100 |
---|---|---|
committer | Sorin Sbarnea <ssbarnea@redhat.com> | 2020-07-06 14:16:58 +0100 |
commit | 70a7997197bc61a0e8c24c107c9c73a990d5db53 (patch) | |
tree | 7be271de0533f4b3507c45e0b8944551ec596eb6 | |
parent | 041e251b7c3d76f7cc89e491f2ed246b87b1cd9c (diff) | |
download | zuul-70a7997197bc61a0e8c24c107c9c73a990d5db53.tar.gz |
Replace cookie use with localStorage
Avoid use of cookies which are always sent to the server, so they
are subject to privacy laws. Instead it makes use of browser local
storage, something that is persistent and not exposed to the
server side.
Change-Id: I8be5c87267e366f0cf152145002c3d3f541add80
-rw-r--r-- | web/src/containers/timezone/SelectTz.jsx | 23 | ||||
-rw-r--r-- | web/src/pages/Status.jsx | 27 |
2 files changed, 8 insertions, 42 deletions
diff --git a/web/src/containers/timezone/SelectTz.jsx b/web/src/containers/timezone/SelectTz.jsx index 78092d2ab..b8e5060be 100644 --- a/web/src/containers/timezone/SelectTz.jsx +++ b/web/src/containers/timezone/SelectTz.jsx @@ -30,35 +30,18 @@ class SelectTz extends React.Component { componentDidMount () { this.loadState() + window.addEventListener('storage', this.loadState) } handleChange = (selectedTz) => { const tz = selectedTz.value - this.setCookie('zuul_tz_string', tz) + localStorage.setItem('zuul_tz_string', tz) this.updateState(tz) } - setCookie (name, value) { - document.cookie = name + '=' + value + '; path=/' - } - loadState = () => { - function readCookie (name, defaultValue) { - let nameEQ = name + '=' - let ca = document.cookie.split(';') - for (let i = 0; i < ca.length; i++) { - let c = ca[i] - while (c.charAt(0) === ' ') { - c = c.substring(1, c.length) - } - if (c.indexOf(nameEQ) === 0) { - return c.substring(nameEQ.length, c.length) - } - } - return defaultValue - } - let tz = readCookie('zuul_tz_string', '') + let tz = localStorage.getItem('zuul_tz_string') || '' if (tz) { this.updateState(tz) } diff --git a/web/src/pages/Status.jsx b/web/src/pages/Status.jsx index 3ad50f4cb..67bb3230b 100644 --- a/web/src/pages/Status.jsx +++ b/web/src/pages/Status.jsx @@ -78,10 +78,6 @@ class StatusPage extends Refreshable { this.visibilityChangeEvent, this.visibilityListener, false) } - setCookie (name, value, pathname) { - document.cookie = name + '=' + value + '; path=' + pathname - } - updateData = (force) => { if (force || (this.visible && this.state.autoReload)) { this.props.dispatch(fetchStatusIfNeeded(this.props.tenant)) @@ -100,6 +96,7 @@ class StatusPage extends Refreshable { document.title = 'Zuul Status' this.loadState() super.componentDidMount() + window.addEventListener('storage', this.loadState) } componentWillUnmount () { @@ -115,7 +112,7 @@ class StatusPage extends Refreshable { setFilter = (filter) => { this.filter.value = filter this.setState({filter: filter}) - this.setCookie('zuul_filter_string', filter, window.location.pathname) + localStorage.setItem('zuul_filter_string', filter) } handleKeyPress = (e) => { @@ -128,26 +125,12 @@ class StatusPage extends Refreshable { handleCheckBox = (e) => { this.setState({expanded: e.target.checked}) - this.setCookie('zuul_expand_by_default', e.target.checked, '/') + localStorage.setItem('zuul_expand_by_default', e.target.checked) } loadState = () => { - function readCookie (name, defaultValue) { - let nameEQ = name + '=' - let ca = document.cookie.split(';') - for (let i = 0; i < ca.length; i++) { - let c = ca[i] - while (c.charAt(0) === ' ') { - c = c.substring(1, c.length) - } - if (c.indexOf(nameEQ) === 0) { - return c.substring(nameEQ.length, c.length) - } - } - return defaultValue - } - let filter = readCookie('zuul_filter_string', '') - let expanded = readCookie('zuul_expand_by_default', false) + let filter = localStorage.getItem('zuul_filter_string') || '' + let expanded = localStorage.getItem('zuul_expand_by_default') || false if (typeof expanded === 'string') { expanded = (expanded === 'true') } |