From 156e86e93c4515de0c05e14a148a3780e8e9102b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9e=20Kooi?= Date: Wed, 8 May 2019 13:17:39 +0200 Subject: [PATCH] companion: pass token through postMessage as JSON, fixes #1424 Thanks to @serverdevil for the investigation! --- .../companion/src/server/controllers/send-token.js | 2 +- packages/@uppy/provider-views/src/index.js | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/companion/src/server/controllers/send-token.js b/packages/@uppy/companion/src/server/controllers/send-token.js index 07fe8272b1..99bac76487 100644 --- a/packages/@uppy/companion/src/server/controllers/send-token.js +++ b/packages/@uppy/companion/src/server/controllers/send-token.js @@ -42,7 +42,7 @@ const htmlContent = (token, origin) => { diff --git a/packages/@uppy/provider-views/src/index.js b/packages/@uppy/provider-views/src/index.js index c17d0d386c..6ea78ca29e 100644 --- a/packages/@uppy/provider-views/src/index.js +++ b/packages/@uppy/provider-views/src/index.js @@ -419,9 +419,19 @@ module.exports = class ProviderView { this.plugin.uppy.log(`rejecting event from ${e.origin} vs allowed pattern ${this.plugin.opts.companionAllowedHosts}`) return } + + // Check if it's a string before doing the JSON.parse to maintain support + // for older Companion versions that used object references + const data = typeof e.data === 'string' ? JSON.parse(e.data) : e.data + + if (!data.token) { + this.plugin.uppy.log('did not receive token from auth window') + return + } + authWindow.close() window.removeEventListener('message', handleToken) - this.provider.setAuthToken(e.data.token) + this.provider.setAuthToken(data.token) this.preFirstRender() } window.addEventListener('message', handleToken)