renders.handler.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. const utils = require("../utils");
  2. const query = require("../queries")
  3. const env = require("../env");
  4. /**
  5. * @type {import("express").Handler}
  6. */
  7. async function homepage(req, res) {
  8. const user = req.user;
  9. const default_domain = env.DEFAULT_DOMAIN;
  10. const domains = user && await query.domain.get({ user_id: user.id });
  11. res.render("homepage", {
  12. title: "Modern open source URL shortener",
  13. user,
  14. domains,
  15. default_domain,
  16. });
  17. }
  18. /**
  19. * @type {import("express").Handler}
  20. */
  21. function login(req, res) {
  22. if (req.user) {
  23. return res.redirect("/");
  24. }
  25. res.render("login", {
  26. title: "Log in or sign up"
  27. });
  28. }
  29. /**
  30. * @type {import("express").Handler}
  31. */
  32. function logout(req, res) {
  33. res.clearCookie("token", { httpOnly: true, secure: env.isProd });
  34. res.render("logout", {
  35. title: "Logging out.."
  36. });
  37. }
  38. /**
  39. * @type {import("express").Handler}
  40. */
  41. async function confirmLinkDelete(req, res) {
  42. const link = await query.link.find({
  43. uuid: req.query.id,
  44. ...(!req.user.admin && { user_id: req.user.id })
  45. });
  46. await utils.sleep(500);
  47. if (!link) {
  48. return res.render("partials/links/dialog_message", {
  49. layout: false,
  50. message: "Could not find the link."
  51. });
  52. }
  53. res.render("partials/links/dialog_delete", {
  54. layout: false,
  55. link: utils.getShortURL(link.address, link.domain).link,
  56. id: link.uuid
  57. });
  58. }
  59. /**
  60. * @type {import("express").Handler}
  61. */
  62. async function linkEdit(req, res) {
  63. const link = await query.link.find({
  64. uuid: req.params.id,
  65. ...(!req.user.admin && { user_id: req.user.id })
  66. });
  67. console.log(utils.sanitize.link(link));
  68. await utils.sleep(500);
  69. // TODO: handle when no link
  70. // if (!link) {
  71. // return res.render("partials/links/dialog_message", {
  72. // layout: false,
  73. // message: "Could not find the link."
  74. // });
  75. // }
  76. res.render("partials/links/edit", {
  77. layout: false,
  78. ...utils.sanitize.link(link),
  79. });
  80. }
  81. module.exports = {
  82. homepage,
  83. linkEdit,
  84. login,
  85. logout,
  86. confirmLinkDelete,
  87. }