PasswordResetHandler.coffee 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. settings = require("settings-sharelatex")
  2. async = require("async")
  3. UserGetter = require("../User/UserGetter")
  4. PasswordResetTokenHandler = require("./PasswordResetTokenHandler")
  5. EmailHandler = require("../Email/EmailHandler")
  6. AuthenticationManager = require("../Authentication/AuthenticationManager")
  7. logger = require("logger-sharelatex")
  8. module.exports =
  9. generateAndEmailResetToken:(email, callback = (error, exists) ->)->
  10. UserGetter.getUser email:email, (err, user)->
  11. if err then return callback(err)
  12. if !user? or user.holdingAccount
  13. logger.err email:email, "user could not be found for password reset"
  14. return callback(null, false)
  15. PasswordResetTokenHandler.getNewToken user._id, (err, token)->
  16. if err then return callback(err)
  17. emailOptions =
  18. to : email
  19. setNewPasswordUrl : "#{settings.siteUrl}/user/password/set?passwordResetToken=#{token}&email=#{encodeURIComponent(email)}"
  20. EmailHandler.sendEmail "passwordResetRequested", emailOptions, (error) ->
  21. return callback(error) if error?
  22. callback null, true
  23. setNewUserPassword: (token, password, callback = (error, found) ->)->
  24. PasswordResetTokenHandler.getUserIdFromTokenAndExpire token, (err, user_id)->
  25. if err then return callback(err)
  26. if !user_id?
  27. return callback null, false
  28. AuthenticationManager.setUserPassword user_id, password, (err) ->
  29. if err then return callback(err)
  30. callback null, true