link.routes.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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.get(
  20. "/admin",
  21. locals.viewTemplate("partials/admin/links/table"),
  22. asyncHandler(auth.apikey),
  23. asyncHandler(auth.jwt),
  24. asyncHandler(auth.admin),
  25. helpers.parseQuery,
  26. locals.adminTable,
  27. asyncHandler(link.getAdmin)
  28. );
  29. router.post(
  30. "/",
  31. cors(),
  32. locals.viewTemplate("partials/shortener"),
  33. asyncHandler(auth.apikey),
  34. asyncHandler(env.DISALLOW_ANONYMOUS_LINKS ? auth.jwt : auth.jwtLoose),
  35. asyncHandler(auth.cooldown),
  36. locals.createLink,
  37. validators.createLink,
  38. asyncHandler(helpers.verify),
  39. asyncHandler(link.create)
  40. );
  41. router.patch(
  42. "/:id",
  43. locals.viewTemplate("partials/links/edit"),
  44. asyncHandler(auth.apikey),
  45. asyncHandler(auth.jwt),
  46. locals.editLink,
  47. validators.editLink,
  48. asyncHandler(helpers.verify),
  49. asyncHandler(link.edit)
  50. );
  51. router.patch(
  52. "/admin/:id",
  53. locals.viewTemplate("partials/links/edit"),
  54. asyncHandler(auth.apikey),
  55. asyncHandler(auth.jwt),
  56. asyncHandler(auth.admin),
  57. locals.editLink,
  58. validators.editLink,
  59. asyncHandler(helpers.verify),
  60. asyncHandler(link.editAdmin)
  61. );
  62. router.delete(
  63. "/:id",
  64. locals.viewTemplate("partials/links/dialog/delete"),
  65. asyncHandler(auth.apikey),
  66. asyncHandler(auth.jwt),
  67. validators.deleteLink,
  68. asyncHandler(helpers.verify),
  69. asyncHandler(link.remove)
  70. );
  71. router.post(
  72. "/admin/ban/:id",
  73. locals.viewTemplate("partials/links/dialog/ban"),
  74. asyncHandler(auth.apikey),
  75. asyncHandler(auth.jwt),
  76. asyncHandler(auth.admin),
  77. validators.banLink,
  78. asyncHandler(helpers.verify),
  79. asyncHandler(link.ban)
  80. );
  81. router.get(
  82. "/:id/stats",
  83. locals.viewTemplate("partials/stats"),
  84. asyncHandler(auth.apikey),
  85. asyncHandler(auth.jwt),
  86. validators.getStats,
  87. asyncHandler(helpers.verify),
  88. asyncHandler(link.stats)
  89. );
  90. router.post(
  91. "/:id/protected",
  92. locals.viewTemplate("partials/protected/form"),
  93. locals.protected,
  94. validators.redirectProtected,
  95. asyncHandler(helpers.verify),
  96. asyncHandler(link.redirectProtected)
  97. );
  98. router.post(
  99. "/report",
  100. locals.viewTemplate("partials/report/form"),
  101. auth.featureAccess([env.MAIL_ENABLED]),
  102. validators.reportLink,
  103. asyncHandler(helpers.verify),
  104. asyncHandler(link.report)
  105. );
  106. module.exports = router;