PasswordResetHandler.coffee 1.3 KB

1234567891011121314151617181920212223242526272829303132
  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?
  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}"
  20. EmailHandler.sendEmail "passwordResetRequested", emailOptions, (error) ->
  21. return callback(error) if error?
  22. callback null, true
  23. setNewUserPassword: (token, password, callback)->
  24. PasswordResetTokenHandler.getUserIdFromTokenAndExpire token, (err, user_id)->
  25. if err then return callback(err)
  26. if !user_id?
  27. logger.err user_id:user_id, "token for password reset did not find user_id"
  28. return callback("no user found")
  29. AuthenticationManager.setUserPassword user_id, password, callback