Browse Source

companion: only set cookies for providers that need it

fixes #1967
ifedapoolarewaju 5 năm trước cách đây
mục cha
commit
cde05cbb31

+ 4 - 2
packages/@uppy/companion/src/server/controllers/send-token.js

@@ -16,8 +16,10 @@ const versionCmp = require('../helpers/version')
  */
 module.exports = function sendToken (req, res, next) {
   const uppyAuthToken = req.companion.authToken
-  // add the token to cookies for thumbnail/image requests
-  tokenService.addToCookies(res, uppyAuthToken, req.companion.options, req.companion.provider.authProvider)
+  // some providers need the token in cookies for thumbnail/image requests
+  if (req.companion.provider.needsCookieAuth) {
+    tokenService.addToCookies(res, uppyAuthToken, req.companion.options, req.companion.provider.authProvider)
+  }
 
   const dynamic = (req.session.grant || {}).dynamic || {}
   const state = dynamic.state

+ 1 - 0
packages/@uppy/companion/src/server/provider/Provider.js

@@ -7,6 +7,7 @@ class Provider {
    * @param {object} options
    */
   constructor (options) {
+    this.needsCookieAuth = false
     return this
   }
 

+ 1 - 1
packages/@uppy/companion/src/server/provider/drive/adapter.js

@@ -64,7 +64,7 @@ exports.getItemModifiedDate = (item) => {
 }
 
 exports.getItemThumbnailUrl = (item) => {
-  return `/drive/thumbnail/${exports.getItemRequestPath(item)}`
+  return item.thumbnailLink
 }
 
 exports.isSharedDrive = (item) => {

+ 7 - 13
packages/@uppy/companion/src/server/provider/drive/index.js

@@ -78,7 +78,6 @@ class Drive extends Provider {
           const returnData = this.adaptData(
             filesResponse.body,
             sharedDrives && sharedDrives.body,
-            options.companion,
             directory,
             query
           )
@@ -114,16 +113,11 @@ class Drive extends Provider {
       })
   }
 
-  thumbnail ({ id, token }, done) {
-    return this.stats({ id, token }, (err, resp, body) => {
-      if (err || resp.statusCode !== 200) {
-        err = this._error(err, resp)
-        logger.error(err, 'provider.drive.thumbnail.error')
-        return done(err)
-      }
-
-      done(null, body.thumbnailLink ? request(body.thumbnailLink) : null)
-    })
+  thumbnail (_, done) {
+    // not implementing this because a public thumbnail from onedrive will be used instead
+    const err = new Error('call to thumbnail is not implemented')
+    logger.error(err, 'provider.drive.thumbnail.error')
+    return done(err)
   }
 
   size ({ id, token }, done) {
@@ -151,14 +145,14 @@ class Drive extends Provider {
       })
   }
 
-  adaptData (res, sharedDrivesResp, companion, directory, query) {
+  adaptData (res, sharedDrivesResp, directory, query) {
     const adaptItem = (item) => ({
       isFolder: adapter.isFolder(item),
       icon: adapter.getItemIcon(item),
       name: adapter.getItemName(item),
       mimeType: adapter.getMimeType(item),
       id: adapter.getItemId(item),
-      thumbnail: companion.buildURL(adapter.getItemThumbnailUrl(item), true),
+      thumbnail: adapter.getItemThumbnailUrl(item),
       requestPath: adapter.getItemRequestPath(item),
       modifiedDate: adapter.getItemModifiedDate(item),
       size: adapter.getItemSize(item),

+ 2 - 0
packages/@uppy/companion/src/server/provider/dropbox/index.js

@@ -24,6 +24,8 @@ class DropBox extends Provider {
     super(options)
     this.authProvider = options.provider = DropBox.authProvider
     this.client = purest(options)
+    // needed for the thumbnails fetched via companion
+    this.needsCookieAuth = true
   }
 
   static get authProvider () {