Bläddra i källkod

Merge pull request #2096 from transloadit/oauth-redirect-state

companion: read state from session in oauth-redirect controller
Ifedapo .A. Olarewaju 5 år sedan
förälder
incheckning
4d00ef3429

+ 5 - 3
packages/@uppy/companion/src/server/controllers/oauth-redirect.js

@@ -9,10 +9,12 @@ const oAuthState = require('../helpers/oauth-state')
  * @param {object} res
  * @param {object} res
  */
  */
 module.exports = function oauthRedirect (req, res) {
 module.exports = function oauthRedirect (req, res) {
-  if (!req.query.state) {
-    return res.status(400).send('Cannot find state param in reques')
+  const dynamic = (req.session.grant || {}).dynamic || {}
+  const state = dynamic.state
+  if (!state) {
+    return res.status(400).send('Cannot find state in session')
   }
   }
-  const handler = oAuthState.getFromState(req.query.state, 'companionInstance', req.companion.options.secret)
+  const handler = oAuthState.getFromState(state, 'companionInstance', req.companion.options.secret)
   const handlerHostName = parseUrl(handler).host
   const handlerHostName = parseUrl(handler).host
 
 
   if (hasMatch(handlerHostName, req.companion.options.server.validHosts)) {
   if (hasMatch(handlerHostName, req.companion.options.server.validHosts)) {

+ 2 - 2
packages/@uppy/companion/test/mockserver.js

@@ -2,7 +2,7 @@ const { app } = require('../src/standalone')
 
 
 const express = require('express')
 const express = require('express')
 const session = require('express-session')
 const session = require('express-session')
-var authServer = express()
+const authServer = express()
 
 
 authServer.use(session({ secret: 'grant', resave: true, saveUninitialized: true }))
 authServer.use(session({ secret: 'grant', resave: true, saveUninitialized: true }))
 authServer.all('*/callback', (req, res, next) => {
 authServer.all('*/callback', (req, res, next) => {
@@ -11,7 +11,7 @@ authServer.all('*/callback', (req, res, next) => {
   }
   }
   next()
   next()
 })
 })
-authServer.all('*/send-token', (req, res, next) => {
+authServer.all(['*/send-token', '*/redirect'], (req, res, next) => {
   req.session.grant = { dynamic: { state: req.query.state || 'non-empty-value' } }
   req.session.grant = { dynamic: { state: req.query.state || 'non-empty-value' } }
   next()
   next()
 })
 })