Newer
Older
express-blog / src / routes / contact.js
// src/routes/contact.js
const express = require("express");
const router = express.Router();
const sendContactMail = require("../utils/sendContactMail");
const getBaseContext = require("../utils/baseContext");
const formLimiter = require("../utils/formLimiter");
const verifyHCaptcha = require("../utils/verifyHCaptcha");

router.post("/contact", formLimiter, async (req, res, next) => {
  try {
    const { name, email, message, hcaptchaToken } = req.body;
    if (!hcaptchaToken) {
      return res.status(400).send("Captcha token missing");
    }
    const valid = await verifyHCaptcha(hcaptchaToken);
    if (!valid) {
      return res.status(400).send("Captcha verification failed");
    }
    await sendContactMail({ name, email, message });
    res.redirect("/contact/thankyou");
  } catch (err) {
    next(err);
  }
});

router.get("/contact", async (req, res) => {
  const context = await getBaseContext({
    csrfToken: res.locals.csrfToken,
    title: "Contact",
  });
  res.render("pages/contact.handlebars", context);
});

router.get("/contact/thankyou", async (req, res) => {
  const context = await getBaseContext({
    title: "Thank You",
  });
  res.render("pages/thankyou.handlebars", context);
});

module.exports = router;