AccountMergeEmailController.coffee 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. UserGetter = require '../User/UserGetter'
  2. UserUpdater = require '../User/UserUpdater'
  3. OneTimeTokenHandler = require '../Security/OneTimeTokenHandler'
  4. logger = require 'logger-sharelatex'
  5. Settings = require 'settings-sharelatex'
  6. module.exports = AccountMergeEmailController =
  7. confirmMergeFromEmail: (req, res, next) ->
  8. token = req.query.token
  9. if !token
  10. return res.status(400).send()
  11. OneTimeTokenHandler.getValueFromTokenAndExpire 'account-merge-email-to-ol', token, (err, data) ->
  12. return next(err) if err?
  13. if !data
  14. return res.status(404).send()
  15. if data.origin != 'sl'
  16. logger.log {}, "Only sharelatex origin supported"
  17. return res.status(501).send()
  18. { sl_id, v1_id, final_email } = data
  19. UserGetter.getUser sl_id, {_id: 1, overleaf: 1}, (err, user) ->
  20. return next(err) if err?
  21. if !user?
  22. logger.err {userId: sl_id}, 'SL user not found for account-merge'
  23. return res.status(400).send()
  24. if user?.overleaf?.id?
  25. logger.err {userId: sl_id}, 'SL user is already linked to overleaf'
  26. return res.status(400).send()
  27. logger.log {sl_id, v1_id, final_email, origin: data.origin},
  28. "[AccountMergeEmailController] about to merge sharelatex and overleaf-v1 accounts"
  29. UserUpdater.mergeSharelatexAndV1Accounts sl_id, v1_id, final_email, (err) ->
  30. return next(err) if err?
  31. res.render 'account_merge/finish', {
  32. finalEmail: final_email
  33. }