link.routes.js 2.7 KB

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