auth.routes.js 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. const { Router } = require("express");
  2. const validators = require("../handlers/validators.handler");
  3. const helpers = require("../handlers/helpers.handler");
  4. const asyncHandler = require("../utils/asyncHandler");
  5. const locals = require("../handlers/locals.handler");
  6. const auth = require("../handlers/auth.handler");
  7. const utils = require("../utils");
  8. const env = require("../env");
  9. const router = Router();
  10. router.post(
  11. "/login",
  12. locals.viewTemplate("partials/auth/form"),
  13. validators.login,
  14. asyncHandler(helpers.verify),
  15. helpers.rateLimit({ window: 60, limit: 5 }),
  16. asyncHandler(auth.local),
  17. asyncHandler(auth.login)
  18. );
  19. router.post(
  20. "/signup",
  21. locals.viewTemplate("partials/auth/form"),
  22. auth.featureAccess([!env.DISALLOW_REGISTRATION, env.MAIL_ENABLED]),
  23. validators.signup,
  24. asyncHandler(helpers.verify),
  25. helpers.rateLimit({ window: 60, limit: 5 }),
  26. validators.signupEmailTaken,
  27. asyncHandler(helpers.verify),
  28. asyncHandler(auth.signup)
  29. );
  30. router.post(
  31. "/create-admin",
  32. locals.viewTemplate("partials/auth/form_admin"),
  33. validators.createAdmin,
  34. asyncHandler(helpers.verify),
  35. helpers.rateLimit({ window: 60, limit: 5 }),
  36. asyncHandler(auth.createAdminUser)
  37. );
  38. router.post(
  39. "/change-password",
  40. locals.viewTemplate("partials/settings/change_password"),
  41. asyncHandler(auth.jwt),
  42. validators.changePassword,
  43. asyncHandler(helpers.verify),
  44. helpers.rateLimit({ window: 60, limit: 5 }),
  45. asyncHandler(auth.changePassword)
  46. );
  47. router.post(
  48. "/change-email",
  49. locals.viewTemplate("partials/settings/change_email"),
  50. asyncHandler(auth.jwt),
  51. auth.featureAccess([env.MAIL_ENABLED]),
  52. validators.changeEmail,
  53. asyncHandler(helpers.verify),
  54. helpers.rateLimit({ window: 60, limit: 3 }),
  55. asyncHandler(auth.changeEmailRequest)
  56. );
  57. router.post(
  58. "/apikey",
  59. locals.viewTemplate("partials/settings/apikey"),
  60. asyncHandler(auth.jwt),
  61. helpers.rateLimit({ window: 60, limit: 10 }),
  62. asyncHandler(auth.generateApiKey)
  63. );
  64. router.post(
  65. "/reset-password",
  66. locals.viewTemplate("partials/reset_password/request_form"),
  67. auth.featureAccess([env.MAIL_ENABLED]),
  68. validators.resetPassword,
  69. asyncHandler(helpers.verify),
  70. helpers.rateLimit({ window: 60, limit: 3 }),
  71. asyncHandler(auth.resetPassword)
  72. );
  73. router.post(
  74. "/new-password",
  75. locals.viewTemplate("partials/reset_password/new_password_form"),
  76. locals.newPassword,
  77. validators.newPassword,
  78. asyncHandler(helpers.verify),
  79. helpers.rateLimit({ window: 60, limit: 5 }),
  80. asyncHandler(auth.newPassword)
  81. );
  82. module.exports = router;