PasswordResetHandler.coffee 1.3 KB

123456789101112131415161718192021222324252627282930
  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)->
  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(message:"Can't find that email, sorry.")
  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, callback
  21. setNewUserPassword: (token, password, callback)->
  22. PasswordResetTokenHandler.getUserIdFromTokenAndExpire token, (err, user_id)->
  23. if err then return callback(err)
  24. if !user_id?
  25. logger.err user_id:user_id, "token for password reset did not find user_id"
  26. return callback("no user found")
  27. AuthenticationManager.setUserPassword user_id, password, callback