summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSorin Sbarnea <ssbarnea@redhat.com>2020-07-06 11:06:50 +0100
committerSorin Sbarnea <ssbarnea@redhat.com>2020-07-06 14:16:58 +0100
commit70a7997197bc61a0e8c24c107c9c73a990d5db53 (patch)
tree7be271de0533f4b3507c45e0b8944551ec596eb6
parent041e251b7c3d76f7cc89e491f2ed246b87b1cd9c (diff)
downloadzuul-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.jsx23
-rw-r--r--web/src/pages/Status.jsx27
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')
}