connect.js 873 B

123456789101112131415161718192021222324252627
  1. const atob = require('atob')
  2. const oAuthState = require('../helpers/oauth-state')
  3. /**
  4. * initializes the oAuth flow for a provider.
  5. *
  6. * @param {object} req
  7. * @param {object} res
  8. */
  9. module.exports = function connect (req, res) {
  10. const { secret } = req.companion.options
  11. let state = oAuthState.generateState(secret)
  12. if (req.query.state) {
  13. const origin = JSON.parse(atob(req.query.state))
  14. state = oAuthState.addToState(state, origin, secret)
  15. }
  16. if (req.companion.options.server.oauthDomain) {
  17. state = oAuthState.addToState(state, { companionInstance: req.companion.buildURL('', true) }, secret)
  18. }
  19. if (req.query.uppyPreAuthToken) {
  20. state = oAuthState.addToState(state, { preAuthToken: req.query.uppyPreAuthToken }, secret)
  21. }
  22. res.redirect(req.companion.buildURL(`/connect/${req.companion.provider.authProvider}?state=${state}`, true))
  23. }