callback.js 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * oAuth callback. Encrypts the access token and sends the new token with the response,
  3. */
  4. const tokenService = require('../helpers/jwt')
  5. const logger = require('../logger')
  6. /**
  7. *
  8. * @param {object} req
  9. * @param {object} res
  10. * @param {function} next
  11. */
  12. module.exports = function callback (req, res, next) {
  13. const providerName = req.params.providerName
  14. if (!req.companion.providerTokens) {
  15. req.companion.providerTokens = {}
  16. }
  17. const grant = req.session.grant || {}
  18. if (grant.response && grant.response.access_token) {
  19. req.companion.providerTokens[providerName] = grant.response.access_token
  20. logger.debug(`Generating auth token for provider ${providerName}`, null, req.id)
  21. const uppyAuthToken = tokenService.generateToken(req.companion.providerTokens, req.companion.options.secret)
  22. return res.redirect(req.companion.buildURL(`/${providerName}/send-token?uppyAuthToken=${uppyAuthToken}`, true))
  23. }
  24. logger.debug(`Did not receive access token for provider ${providerName}`, null, req.id)
  25. logger.debug(grant.response, 'callback.oauth.resp', req.id)
  26. return res.sendStatus(400)
  27. }