link.routes.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. const { Router } = require("express");
  2. const cors = require("cors");
  3. const validators = require("../handlers/validators.handler");
  4. const helpers = require("../handlers/helpers.handler");
  5. const asyncHandler = require("../utils/asyncHandler");
  6. const locals = require("../handlers/locals.handler");
  7. const link = require("../handlers/links.handler");
  8. const auth = require("../handlers/auth.handler");
  9. const env = require("../env");
  10. const router = Router();
  11. router.get(
  12. "/",
  13. locals.viewTemplate("partials/links/table"),
  14. asyncHandler(auth.apikey),
  15. asyncHandler(auth.jwt),
  16. helpers.parseQuery,
  17. asyncHandler(link.get)
  18. );
  19. router.post(
  20. "/",
  21. cors(),
  22. locals.viewTemplate("partials/shortener"),
  23. asyncHandler(auth.apikey),
  24. asyncHandler(env.DISALLOW_ANONYMOUS_LINKS ? auth.jwt : auth.jwtLoose),
  25. asyncHandler(auth.cooldown),
  26. locals.createLink,
  27. validators.createLink,
  28. asyncHandler(helpers.verify),
  29. asyncHandler(link.create)
  30. );
  31. router.patch(
  32. "/:id",
  33. locals.viewTemplate("partials/links/edit"),
  34. asyncHandler(auth.apikey),
  35. asyncHandler(auth.jwt),
  36. locals.editLink,
  37. validators.editLink,
  38. asyncHandler(helpers.verify),
  39. asyncHandler(link.edit)
  40. );
  41. router.delete(
  42. "/:id",
  43. locals.viewTemplate("partials/links/dialog/delete"),
  44. asyncHandler(auth.apikey),
  45. asyncHandler(auth.jwt),
  46. validators.deleteLink,
  47. asyncHandler(helpers.verify),
  48. asyncHandler(link.remove)
  49. );
  50. router.post(
  51. "/admin/ban/:id",
  52. locals.viewTemplate("partials/links/dialog/ban"),
  53. asyncHandler(auth.apikey),
  54. asyncHandler(auth.jwt),
  55. asyncHandler(auth.admin),
  56. validators.banLink,
  57. asyncHandler(helpers.verify),
  58. asyncHandler(link.ban)
  59. );
  60. router.get(
  61. "/:id/stats",
  62. locals.viewTemplate("partials/stats"),
  63. asyncHandler(auth.apikey),
  64. asyncHandler(auth.jwt),
  65. validators.getStats,
  66. asyncHandler(helpers.verify),
  67. asyncHandler(link.stats)
  68. );
  69. router.post(
  70. "/:id/protected",
  71. locals.viewTemplate("partials/protected/form"),
  72. locals.protected,
  73. validators.redirectProtected,
  74. asyncHandler(helpers.verify),
  75. asyncHandler(link.redirectProtected)
  76. );
  77. router.post(
  78. "/report",
  79. locals.viewTemplate("partials/report/form"),
  80. auth.featureAccess([env.MAIL_ENABLED]),
  81. validators.reportLink,
  82. asyncHandler(helpers.verify),
  83. asyncHandler(link.report)
  84. );
  85. module.exports = router;