Browse Source

companion: fix zoom logout endpoint (#2414)

Ifedapo .A. Olarewaju 4 năm trước cách đây
mục cha
commit
b7369acefd

+ 5 - 4
packages/@uppy/companion/src/server/controllers/logout.js

@@ -14,9 +14,10 @@ function logout (req, res, next) {
     }
   }
   const providerName = req.params.providerName
-  const token = req.companion.providerTokens ? req.companion.providerTokens[providerName] : null
+  const companion = req.companion
+  const token = companion.providerTokens ? companion.providerTokens[providerName] : null
   if (token) {
-    req.companion.provider.logout({ token }, (err, data) => {
+    companion.provider.logout({ token, companion }, (err, data) => {
       if (err) {
         const errResp = errorToResponse(err)
         if (errResp) {
@@ -25,8 +26,8 @@ function logout (req, res, next) {
         return next(err)
       }
 
-      delete req.companion.providerTokens[providerName]
-      tokenService.removeFromCookies(res, req.companion.options, req.companion.provider.authProviderName)
+      delete companion.providerTokens[providerName]
+      tokenService.removeFromCookies(res, companion.options, companion.provider.authProviderName)
       cleanSession()
       res.json(Object.assign({ ok: true }, data))
     })

+ 13 - 8
packages/@uppy/companion/src/server/provider/zoom/index.js

@@ -241,21 +241,26 @@ class Zoom extends Provider {
     return data
   }
 
-  logout ({ token }, done) {
-    const encodedAuth = Buffer.from(
-      `${process.env.COMPANION_ZOOM_KEY}:${process.env.COMPANION_ZOOM_SECRET}`, 'binary'
-    ).toString('base64')
+  logout ({ companion, token }, done) {
+    const key = companion.options.providerOptions.zoom.key
+    const secret = companion.options.providerOptions.zoom.secret
+    const encodedAuth = Buffer.from(`${key}:${secret}`, 'binary').toString('base64')
+
     return this.client
-      .post('logout')
-      .auth(encodedAuth)
+      .post('https://zoom.us/oauth/revoke')
+      .options({
+        headers: {
+          Authorization: `Basic ${encodedAuth}`
+        }
+      })
       .qs({ token })
-      .request((err, resp) => {
+      .request((err, resp, body) => {
         if (err || resp.statusCode !== 200) {
           logger.error(err, 'provider.zoom.logout.error')
           done(this._error(err, resp))
           return
         }
-        done(null, { revoked: true })
+        done(null, { revoked: (body || {}).status === 'success' })
       })
   }