aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Wurst <christoph@winzerhof-wurst.at>2019-10-04 12:10:43 +0200
committerJohn Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>2019-10-05 10:25:45 +0200
commit8c023eeabdb3874470e5db1a756ed1b62ea3ecf9 (patch)
tree19edbef8c3495c6d99b92d487a3f9561604959f2
parent87ad219dafd60b9b733a03a34404ab828b195cdb (diff)
downloadnextcloud-server-8c023eeabdb3874470e5db1a756ed1b62ea3ecf9.tar.gz
nextcloud-server-8c023eeabdb3874470e5db1a756ed1b62ea3ecf9.zip
Emit an event when the CSRF token changes
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
-rw-r--r--core/src/OC/index.js12
-rw-r--r--core/src/OC/requesttoken.js14
-rw-r--r--package-lock.json15
-rw-r--r--package.json1
4 files changed, 31 insertions, 11 deletions
diff --git a/core/src/OC/index.js b/core/src/OC/index.js
index 0c95fe3e95f..01964b3ca4a 100644
--- a/core/src/OC/index.js
+++ b/core/src/OC/index.js
@@ -19,6 +19,8 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import { subscribe } from '@nextcloud/event-bus'
+
import { addScript, addStyle } from './legacy-loader'
import {
ajaxConnectionLostHandler,
@@ -67,8 +69,7 @@ import {
getProtocol
} from './host'
import {
- getToken as getRequestToken,
- subscribe as subscribeToRequestTokenChange
+ getToken as getRequestToken
} from './requesttoken'
import {
hideMenus,
@@ -258,4 +259,9 @@ export default {
}
// Keep the request token prop in sync
-subscribeToRequestTokenChange(token => { OC.requestToken = token })
+subscribe('csrf-token-update', e => {
+ OC.requestToken = e.token
+
+ // Logging might help debug (Sentry) issues
+ console.info('OC.requestToken changed', e.token)
+})
diff --git a/core/src/OC/requesttoken.js b/core/src/OC/requesttoken.js
index a92eb169577..91b18069d75 100644
--- a/core/src/OC/requesttoken.js
+++ b/core/src/OC/requesttoken.js
@@ -19,8 +19,9 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+import { emit } from '@nextcloud/event-bus'
+
let token = document.getElementsByTagName('head')[0].getAttribute('data-requesttoken')
-const observers = []
/**
* @returns {string}
@@ -28,15 +29,12 @@ const observers = []
export const getToken = () => token
/**
- * @param {Function} observer observer
- * @returns {number}
- */
-export const subscribe = observer => observers.push(observer)
-
-/**
* @param {String} newToken new token
*/
export const setToken = newToken => {
token = newToken
- observers.forEach(o => o(token))
+
+ emit('csrf-token-update', {
+ token
+ })
}
diff --git a/package-lock.json b/package-lock.json
index 3deef664fa5..2182d4a7c04 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -851,6 +851,21 @@
"qrcode": "^1.3.3"
}
},
+ "@nextcloud/event-bus": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@nextcloud/event-bus/-/event-bus-0.2.0.tgz",
+ "integrity": "sha512-G+YTHhkJFQgJ2126UIrm3ezv+iESDRR/blbaBAz1WoCRPUTHfQZfdoarv/hNbXJaJ7aFz6mLsNe1+oGHwCpstg==",
+ "requires": {
+ "core-js": "^3.1.4"
+ },
+ "dependencies": {
+ "core-js": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
+ "integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw=="
+ }
+ }
+ },
"@nextcloud/router": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/@nextcloud/router/-/router-0.1.0.tgz",
diff --git a/package.json b/package.json
index 45946c9b64c..9fe41224820 100644
--- a/package.json
+++ b/package.json
@@ -25,6 +25,7 @@
"dependencies": {
"@babel/polyfill": "^7.6.0",
"@chenfengyuan/vue-qrcode": "^1.0.1",
+ "@nextcloud/event-bus": "^0.2.0",
"@nextcloud/router": "^0.1.0",
"autosize": "^4.0.2",
"backbone": "^1.4.0",