PasswordResetRouter.mjs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import PasswordResetController from './PasswordResetController.mjs'
  2. import AuthenticationController from '../Authentication/AuthenticationController.js'
  3. import CaptchaMiddleware from '../../Features/Captcha/CaptchaMiddleware.mjs'
  4. import { RateLimiter } from '../../infrastructure/RateLimiter.js'
  5. import RateLimiterMiddleware from '../Security/RateLimiterMiddleware.mjs'
  6. const rateLimiter = new RateLimiter('password_reset_rate_limit', {
  7. points: 6,
  8. duration: 60,
  9. })
  10. export default {
  11. apply(webRouter) {
  12. const rateLimit = RateLimiterMiddleware.rateLimit(rateLimiter, {
  13. ipOnly: true,
  14. })
  15. webRouter.get(
  16. '/user/password/reset',
  17. PasswordResetController.renderRequestResetForm
  18. )
  19. webRouter.post(
  20. '/user/password/reset',
  21. rateLimit,
  22. CaptchaMiddleware.validateCaptcha('passwordReset'),
  23. PasswordResetController.requestReset
  24. )
  25. AuthenticationController.addEndpointToLoginWhitelist('/user/password/reset')
  26. webRouter.get(
  27. '/user/password/set',
  28. rateLimit,
  29. PasswordResetController.renderSetPasswordForm
  30. )
  31. webRouter.post(
  32. '/user/password/set',
  33. rateLimit,
  34. PasswordResetController.setNewUserPassword
  35. )
  36. AuthenticationController.addEndpointToLoginWhitelist('/user/password/set')
  37. webRouter.post(
  38. '/user/reconfirm',
  39. rateLimit,
  40. CaptchaMiddleware.validateCaptcha('passwordReset'),
  41. PasswordResetController.requestReset
  42. )
  43. },
  44. rateLimiter,
  45. }