PasswordResetController.coffee 1.5 KB

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