PasswordResetController.coffee 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. PasswordResetHandler = require("./PasswordResetHandler")
  2. RateLimiter = require("../../infrastructure/RateLimiter")
  3. logger = require "logger-sharelatex"
  4. module.exports =
  5. renderRequestResetForm: (req, res)->
  6. res.render "user/passwordReset",
  7. title:"reset_password"
  8. requestReset: (req, res)->
  9. email = req.body.email.trim().toLowerCase()
  10. opts =
  11. endpointName: "password_reset_rate_limit"
  12. timeInterval: 60
  13. subjectName: req.ip
  14. throttle: 6
  15. RateLimiter.addCount opts, (err, canContinue)->
  16. if !canContinue
  17. return res.send 500, { message: req.i18n.translate("rate_limit_hit_wait")}
  18. PasswordResetHandler.generateAndEmailResetToken email, (err, exists)->
  19. if err?
  20. res.send 500, {message:err?.message}
  21. else if exists
  22. res.send 200
  23. else
  24. res.send 404, {message: req.i18n.translate("cant_find_email")}
  25. renderSetPasswordForm: (req, res)->
  26. res.render "user/setPassword",
  27. title:"set_password"
  28. passwordResetToken:req.query.passwordResetToken
  29. setNewUserPassword: (req, res)->
  30. {passwordResetToken, password} = req.body
  31. if !password? or password.length == 0 or !passwordResetToken? or passwordResetToken.length == 0
  32. return res.send 400
  33. PasswordResetHandler.setNewUserPassword passwordResetToken?.trim(), password?.trim(), (err, found) ->
  34. return next(err) if err?
  35. if found
  36. res.send 200
  37. else
  38. res.send 404, {message: req.i18n.translate("password_reset_token_expired")}