auth.routes.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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/form"),
  67. auth.featureAccess([env.MAIL_ENABLED]),
  68. validators.resetPassword,
  69. asyncHandler(helpers.verify),
  70. helpers.rateLimit({ window: 60, limit: 3 }),
  71. asyncHandler(auth.resetPasswordRequest)
  72. );
  73. module.exports = router;