renders.handler.js 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. const query = require("../queries");
  2. const utils = require("../utils");
  3. const env = require("../env");
  4. async function homepage(req, res) {
  5. res.render("homepage", {
  6. title: "Modern open source URL shortener",
  7. });
  8. }
  9. function login(req, res) {
  10. if (req.user) {
  11. res.redirect("/");
  12. return;
  13. }
  14. res.render("login", {
  15. title: "Log in or sign up"
  16. });
  17. }
  18. function logout(req, res) {
  19. utils.deleteCurrentToken(res);
  20. res.render("logout", {
  21. title: "Logging out.."
  22. });
  23. }
  24. function notFound(req, res) {
  25. res.render("404", {
  26. title: "404 - Not found"
  27. });
  28. }
  29. function settings(req, res) {
  30. res.render("settings", {
  31. title: "Settings"
  32. });
  33. }
  34. function stats(req, res) {
  35. res.render("stats", {
  36. title: "Stats"
  37. });
  38. }
  39. async function banned(req, res) {
  40. res.render("banned", {
  41. title: "Banned link",
  42. });
  43. }
  44. async function report(req, res) {
  45. res.render("report", {
  46. title: "Report abuse",
  47. });
  48. }
  49. async function resetPassword(req, res) {
  50. res.render("reset_password", {
  51. title: "Reset password",
  52. });
  53. }
  54. async function resetPasswordResult(req, res) {
  55. res.render("reset_password_result", {
  56. title: "Reset password",
  57. });
  58. }
  59. async function verifyChangeEmail(req, res) {
  60. res.render("verify_change_email", {
  61. title: "Verifying email",
  62. });
  63. }
  64. async function verify(req, res) {
  65. res.render("verify", {
  66. title: "Verify",
  67. });
  68. }
  69. async function terms(req, res) {
  70. res.render("terms", {
  71. title: "Terms of Service",
  72. });
  73. }
  74. async function confirmLinkDelete(req, res) {
  75. const link = await query.link.find({
  76. uuid: req.query.id,
  77. ...(!req.user.admin && { user_id: req.user.id })
  78. });
  79. if (!link) {
  80. return res.render("partials/links/dialog/message", {
  81. layout: false,
  82. message: "Could not find the link."
  83. });
  84. }
  85. res.render("partials/links/dialog/delete", {
  86. layout: false,
  87. link: utils.getShortURL(link.address, link.domain).link,
  88. id: link.uuid
  89. });
  90. }
  91. async function confirmLinkBan(req, res) {
  92. const link = await query.link.find({
  93. uuid: req.query.id,
  94. ...(!req.user.admin && { user_id: req.user.id })
  95. });
  96. if (!link) {
  97. return res.render("partials/links/dialog/message", {
  98. message: "Could not find the link."
  99. });
  100. }
  101. res.render("partials/links/dialog/ban", {
  102. link: utils.getShortURL(link.address, link.domain).link,
  103. id: link.uuid
  104. });
  105. }
  106. async function addDomainForm(req, res) {
  107. res.render("partials/settings/domain/add_form");
  108. }
  109. async function confirmDomainDelete(req, res) {
  110. const domain = await query.domain.find({
  111. uuid: req.query.id,
  112. user_id: req.user.id
  113. });
  114. if (!domain) {
  115. throw new utils.CustomError("Could not find the link", 400);
  116. }
  117. res.render("partials/settings/domain/delete", {
  118. ...utils.sanitize.domain(domain)
  119. });
  120. }
  121. async function getReportEmail(req, res) {
  122. if (!env.REPORT_EMAIL) {
  123. throw new utils.CustomError("No report email is available.", 400);
  124. }
  125. res.render("partials/report/email", {
  126. report_email: env.REPORT_EMAIL.replace("@", "[at]")
  127. });
  128. }
  129. async function linkEdit(req, res) {
  130. const link = await query.link.find({
  131. uuid: req.params.id,
  132. ...(!req.user.admin && { user_id: req.user.id })
  133. });
  134. res.render("partials/links/edit", {
  135. ...(link && utils.sanitize.link(link)),
  136. });
  137. }
  138. module.exports = {
  139. addDomainForm,
  140. banned,
  141. confirmDomainDelete,
  142. confirmLinkBan,
  143. confirmLinkDelete,
  144. getReportEmail,
  145. homepage,
  146. linkEdit,
  147. login,
  148. logout,
  149. notFound,
  150. report,
  151. resetPassword,
  152. resetPasswordResult,
  153. settings,
  154. stats,
  155. terms,
  156. verifyChangeEmail,
  157. verify,
  158. }