diff options
Diffstat (limited to 'src/routes.js')
-rwxr-xr-x | src/routes.js | 755 |
1 files changed, 280 insertions, 475 deletions
diff --git a/src/routes.js b/src/routes.js index 3a6d8a4..eb7a6a1 100755 --- a/src/routes.js +++ b/src/routes.js @@ -9,8 +9,6 @@ import crypto from "crypto"; import request from "request"; import niceware from "niceware"; import ical from "ical"; -import sgMail from "@sendgrid/mail"; -import nodemailer from "nodemailer"; import fileUpload from "express-fileupload"; import Jimp from "jimp"; import schedule from "node-schedule"; @@ -25,14 +23,10 @@ import path from "path"; import { activityPubContentType } from "./lib/activitypub.js"; import { hashString } from "./util/generator.js"; import i18next from "i18next"; -import { initEmailService } from "./lib/email.js"; +import { EmailService } from "./lib/email.js"; const config = getConfig(); const domain = config.general.domain; -const contactEmail = config.general.email; -const siteName = config.general.site_name; -const mailService = config.general.mail_service; -const siteLogo = config.general.email_logo_url; const isFederated = config.general.is_federated || true; // This alphabet (used to generate all event, group, etc. IDs) is missing '-' @@ -43,12 +37,6 @@ const nanoid = customAlphabet( ); const router = express.Router(); - -let sendEmails = false; -initEmailService().then((emailService) => { - sendEmails = emailService -}); - router.use(fileUpload()); // SCHEDULED DELETION @@ -59,7 +47,10 @@ schedule.scheduleJob("59 23 * * *", function (fireDate) { return; } - const too_old = moment.tz("Etc/UTC").subtract(deleteAfterDays, "days").toDate(); + const too_old = moment + .tz("Etc/UTC") + .subtract(deleteAfterDays, "days") + .toDate(); console.log( "Old event deletion running! Deleting all events concluding before ", too_old, @@ -82,9 +73,9 @@ schedule.scheduleJob("59 23 * * *", function (fireDate) { "deleteOldEvents", "error", "Attempt to delete old event " + - id + - " failed with error: " + - err, + id + + " failed with error: " + + err, ); }); }; @@ -101,9 +92,9 @@ schedule.scheduleJob("59 23 * * *", function (fireDate) { "deleteOldEvents", "error", "Attempt to delete event image for old event " + - event.id + - " failed with error: " + - err, + event.id + + " failed with error: " + + err, ); } // Image removed @@ -150,9 +141,9 @@ schedule.scheduleJob("59 23 * * *", function (fireDate) { "deleteOldEvents", "error", "Attempt to delete old event " + - event.id + - " failed with error: " + - err, + event.id + + " failed with error: " + + err, ); }); @@ -205,9 +196,9 @@ router.post("/deleteimage/:eventID/:editToken", (req, res) => { "deleteEventImage", "error", "Attempt to delete event image for event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); } // Image removed @@ -228,9 +219,9 @@ router.post("/deleteimage/:eventID/:editToken", (req, res) => { "deleteEventImage", "error", "Attempt to delete event image for event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }, @@ -272,9 +263,9 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { "deleteEvent", "error", "Attempt to delete event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); } }, @@ -294,9 +285,9 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { "deleteEvent", "error", "Attempt to delete event image for event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); } // Image removed @@ -304,8 +295,8 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { "deleteEvent", "success", "Event " + - req.params.eventID + - " deleted", + req.params.eventID + + " deleted", ); }, ); @@ -315,82 +306,44 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { }); res.end(); - // Send emails here otherwise they don't exist lol - if (sendEmails) { - const attendeeEmails = event.attendees - .filter( - (o) => - o.status === "attending" && - o.email, - ) - .map((o) => o.email); - if (attendeeEmails.length) { - console.log( - "Sending emails to: " + + const attendeeEmails = event?.attendees?.filter( + (o) => + o.status === "attending" && + o.email, + ) + .map((o) => o.email || '') || []; + if (attendeeEmails.length) { + console.log( + "Sending emails to: " + attendeeEmails, - ); - req.app.get("hbsInstance").renderView( - "./views/emails/deleteEvent/deleteEventHtml.handlebars", - { - siteName, - siteLogo, - domain, - eventName: event.name, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: attendeeEmails, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.deleteeventsubject", {eventName: event.name}), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail - .sendMultiple(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - } - }, - ); - } else { - console.log("Nothing to send!"); - } + ); + req.emailService.sendEmailFromTemplate({ + to: attendeeEmails, + subject: i18next.t("routes.deleteeventsubject", {eventName: event?.name}), + templateName: "deleteEvent", + templateData: { + eventName: event?.name, + }, + }).catch((e) => { + console.error('error sending attendee email', e.toString()); + res.status(500).end(); + }); + } else { + console.log("Nothing to send!"); } }) .catch((err) => { res.send( "Sorry! Something went wrong (error deleting): " + - err, + err, ); addToLog( "deleteEvent", "error", "Attempt to delete event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }, @@ -402,8 +355,8 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { "deleteEvent", "error", "Attempt to delete event " + - req.params.eventID + - " failed with error: token does not match", + req.params.eventID + + " failed with error: token does not match", ); } }) @@ -413,9 +366,9 @@ router.post("/deleteevent/:eventID/:editToken", (req, res) => { "deleteEvent", "error", "Attempt to delete event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }); @@ -448,9 +401,9 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { "deleteEventGroup", "error", "Attempt to delete event group " + - req.params.eventGroupID + - " failed with error: " + - err, + req.params.eventGroupID + + " failed with error: " + + err, ); } }, @@ -470,9 +423,9 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { "deleteEventGroup", "error", "Attempt to delete event image for event group " + - req.params.eventGroupID + - " failed with error: " + - err, + req.params.eventGroupID + + " failed with error: " + + err, ); } }, @@ -488,8 +441,8 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { "deleteEventGroup", "success", "Event group " + - req.params.eventGroupID + - " deleted", + req.params.eventGroupID + + " deleted", ); res.writeHead(302, { Location: "/", @@ -499,30 +452,30 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { .catch((err) => { res.send( "Sorry! Something went wrong (error deleting): " + - err, + err, ); addToLog( "deleteEventGroup", "error", "Attempt to delete event group " + - req.params.eventGroupID + - " failed with error: " + - err, + req.params.eventGroupID + + " failed with error: " + + err, ); }); }) .catch((err) => { res.send( "Sorry! Something went wrong (error deleting): " + - err, + err, ); addToLog( "deleteEventGroup", "error", "Attempt to delete event group " + - req.params.eventGroupID + - " failed with error: " + - err, + req.params.eventGroupID + + " failed with error: " + + err, ); }); } else { @@ -532,8 +485,8 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { "deleteEventGroup", "error", "Attempt to delete event group " + - req.params.eventGroupID + - " failed with error: token does not match", + req.params.eventGroupID + + " failed with error: token does not match", ); } }) @@ -543,9 +496,9 @@ router.post("/deleteeventgroup/:eventGroupID/:editToken", (req, res) => { "deleteEventGroup", "error", "Attempt to delete event group " + - req.params.eventGroupID + - " failed with error: " + - err, + req.params.eventGroupID + + " failed with error: " + + err, ); }); }); @@ -563,9 +516,9 @@ router.post("/attendee/provision", async (req, res) => { "provisionEventAttendee", "error", "Attempt to provision attendee in event " + - req.query.eventID + - " failed with error: " + - e, + req.query.eventID + + " failed with error: " + + e, ); return res.sendStatus(500); }); @@ -581,9 +534,9 @@ router.post("/attendee/provision", async (req, res) => { "provisionEventAttendee", "error", "Attempt to provision attendee in event " + - req.query.eventID + - " failed with error: " + - e, + req.query.eventID + + " failed with error: " + + e, ); return res.sendStatus(500); }); @@ -619,9 +572,9 @@ router.post("/attendevent/:eventID", async (req, res) => { "attendEvent", "error", "Attempt to attend event " + - req.params.eventID + - " failed with error: " + - e, + req.params.eventID + + " failed with error: " + + e, ); return res.sendStatus(500); }); @@ -660,56 +613,38 @@ router.post("/attendevent/:eventID", async (req, res) => { "attendees.$.name": req.body.attendeeName, "attendees.$.email": req.body.attendeeEmail, "attendees.$.number": req.body.attendeeNumber, - "attendees.$.visibility": !!req.body.attendeeVisible ? "public" : "private", + "attendees.$.visibility": req.body.attendeeVisible + ? "public" + : "private", }, }, ) .then((event) => { + if (!event) { + return res.sendStatus(404); + } + addToLog( "addEventAttendee", "success", "Attendee added to event " + req.params.eventID, ); - if (sendEmails) { - if (req.body.attendeeEmail) { - req.app.get("hbsInstance").renderView( - "./views/emails/addEventAttendee/addEventAttendeeHtml.handlebars", - { - eventID: req.params.eventID, - siteName, - siteLogo, - domain, - removalPassword: req.body.removalPassword, - removalPasswordHash: hashString(req.body.removalPassword), - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: req.body.attendeeEmail, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.addeventattendeesubject", {eventName: event.name}), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail.send(msg).catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - } - }, - ); - } + if (req.body.attendeeEmail) { + req.emailService.sendEmailFromTemplate({ + to: req.body.attendeeEmail, + subject: i18next.t("routes.addeventattendeesubject", {eventName: event?.name}), + templateName: "addEventAttendee", + templateData:{ + eventID: req.params.eventID, + removalPassword: req.body.removalPassword, + removalPasswordHash: hashString( + req.body.removalPassword, + ), + }, + }).catch((e) => { + console.error('error sending addEventAttendee email', e.toString()); + res.status(500).end(); + }); } res.redirect(`/${req.params.eventID}`); }) @@ -719,9 +654,9 @@ router.post("/attendevent/:eventID", async (req, res) => { "addEventAttendee", "error", "Attempt to add attendee to event " + - req.params.eventID + - " failed with error: " + - error, + req.params.eventID + + " failed with error: " + + error, ); }); }); @@ -738,54 +673,32 @@ router.get("/oneclickunattendevent/:eventID/:attendeeID", (req, res) => { ) { return res.sendStatus(200); } - Event.updateOne( + Event.findOneAndUpdate( { id: req.params.eventID }, { $pull: { attendees: { _id: req.params.attendeeID } } }, ) - .then((response) => { + .then((event) => { + if (!event) { + return res.sendStatus(404); + } addToLog( "oneClickUnattend", "success", "Attendee removed via one click unattend " + req.params.eventID, ); - if (sendEmails) { - // currently this is never called because we don't have the email address - if (req.body.attendeeEmail) { - req.app.get("hbsInstance").renderView( - "./views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars", - { - eventName: req.params.eventName, - siteName, - domain, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: req.body.attendeeEmail, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.removeeventattendeesubject"), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail.send(msg).catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - } - }, - ); - } + // currently this is never called because we don't have the email address + if (req.body.attendeeEmail) { + req.emailService.sendEmailFromTemplate({ + to: req.body.attendeeEmail, + subject: i18next.t("routes.removeeventattendeesubject"), + templateName: "removeEventAttendee", + templateData:{ + eventName: event.name, + }, + }).catch((e) => { + console.error('error sending removeEventAttendeeHtml email', e.toString()); + res.status(500).end(); + }); } res.writeHead(302, { Location: "/" + req.params.eventID, @@ -798,63 +711,40 @@ router.get("/oneclickunattendevent/:eventID/:attendeeID", (req, res) => { "removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }); router.post("/removeattendee/:eventID/:attendeeID", (req, res) => { - Event.updateOne( + Event.findOneAndUpdate( { id: req.params.eventID }, { $pull: { attendees: { _id: req.params.attendeeID } } }, ) - .then((response) => { + .then((event) => { + if (!event) { + return res.sendStatus(404); + } addToLog( "removeEventAttendee", "success", "Attendee removed by admin from event " + req.params.eventID, ); - if (sendEmails) { - // currently this is never called because we don't have the email address - if (req.body.attendeeEmail) { - req.app.get("hbsInstance").renderView( - "./views/emails/removeEventAttendee/removeEventAttendeeHtml.handlebars", - { - eventName: req.params.eventName, - siteName, - siteLogo, - domain, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: req.body.attendeeEmail, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.removeeventattendeesubject"), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail.send(msg).catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - } - }, - ); - } + // currently this is never called because we don't have the email address + if (req.body.attendeeEmail) { + req.emailService.sendEmailFromTemplate({ + to: req.body.attendeeEmail, + subject: i18next.t("routes.removeeventattendeesubject"), + templateName: "removeEventAttendee", + templateData: { + eventName: event.name, + }, + }).catch((e) => { + console.error('error sending removeEventAttendeeHtml email', e.toString()); + res.status(500).end(); + }); } res.writeHead(302, { Location: "/" + req.params.eventID, @@ -867,9 +757,9 @@ router.post("/removeattendee/:eventID/:attendeeID", (req, res) => { "removeEventAttendee", "error", "Attempt to remove attendee by admin from event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }); @@ -894,45 +784,20 @@ router.post("/subscribe/:eventGroupID", (req, res) => { } eventGroup.subscribers.push(subscriber); eventGroup.save(); - if (sendEmails) { - req.app.get("hbsInstance").renderView( - "./views/emails/subscribed/subscribedHtml.handlebars", - { - eventGroupName: eventGroup.name, - eventGroupID: eventGroup.id, - emailAddress: encodeURIComponent(subscriber.email), - siteName, - siteLogo, - domain, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: subscriber.email, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.subscribedsubject"), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail.send(msg).catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error(e.toString()); - res.status(500).end(); - }); - break; - } - }, - ); - } + req.emailService.sendEmailFromTemplate({ + to: subscriber.email, + subject: i18next.t("routes.subscribedsubject"), + templateName: "subscribed", + templateData:{ + eventGroupName: eventGroup.name, + eventGroupID: eventGroup.id, + emailAddress: encodeURIComponent(subscriber.email), + }, + }).catch((e) => { + console.error('error sending removeEventAttendeeHtml email', e.toString()); + res.status(500).end(); + }); + return res.redirect(`/group/${eventGroup.id}`); }) .catch((error) => { @@ -940,11 +805,11 @@ router.post("/subscribe/:eventGroupID", (req, res) => { "addSubscription", "error", "Attempt to subscribe " + - req.body.emailAddress + - " to event group " + - req.params.eventGroupID + - " failed with error: " + - error, + req.body.emailAddress + + " to event group " + + req.params.eventGroupID + + " failed with error: " + + error, ); return res.sendStatus(500); }); @@ -971,11 +836,11 @@ router.get("/unsubscribe/:eventGroupID", (req, res) => { "removeSubscription", "error", "Attempt to unsubscribe " + - req.query.email + - " from event group " + - req.params.eventGroupID + - " failed with error: " + - error, + req.query.email + + " from event group " + + req.params.eventGroupID + + " failed with error: " + + error, ); return res.sendStatus(500); }); @@ -995,7 +860,9 @@ router.post("/post/comment/:eventID", (req, res) => { id: req.params.eventID, }, function (err, event) { - if (!event) return; + if (!event) { + return res.sendStatus(404); + } event.comments.push(newComment); event .save() @@ -1021,72 +888,40 @@ router.post("/post/comment/:eventID", (req, res) => { event.followers, req.params.eventID, ); - if (sendEmails) { - Event.findOne({ id: req.params.eventID }).then( - (event) => { - const attendeeEmails = event.attendees - .filter( - (o) => - o.status === "attending" && o.email, - ) - .map((o) => o.email); - if (attendeeEmails.length) { - console.log( - "Sending emails to: " + attendeeEmails, - ); - req.app.get("hbsInstance").renderView( - "./views/emails/addEventComment/addEventCommentHtml.handlebars", - { - siteName, - siteLogo, - domain, - eventID: req.params.eventID, - commentAuthor: - req.body.commentAuthor, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: attendeeEmails, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.addeventcommentsubject", { eventName: event.name }), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail - .sendMultiple(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - } - }, - ); - } else { - console.log("Nothing to send!"); - } - }, - ); + if (!event) { + return res.sendStatus(404); } + + Event.findOne({ id: req.params.eventID }).then( + (event) => { + const attendeeEmails = event.attendees + .filter( + (o) => + o.status === "attending" && o.email, + ) + .map((o) => o.email || '') || []; + if (attendeeEmails.length) { + console.log( + "Sending emails to: " + attendeeEmails, + ); + req.emailService.sendEmailFromTemplate({ + to: event?.creatorEmail || config.general.email, + bcc: attendeeEmails, + subject: i18next.t("routes.addeventcommentsubject", { eventName: event?.name }), + templateName: "addEventComment", + templateData:{ + eventID: req.params.eventID, + commentAuthor: req.body.commentAuthor, + }, + }).catch((e) => { + console.error('error sending removeEventAttendeeHtml email', e.toString()); + res.status(500).end(); + }); + } else { + console.log("Nothing to send!"); + } + }, + ); res.writeHead(302, { Location: "/" + req.params.eventID, }); @@ -1098,9 +933,9 @@ router.post("/post/comment/:eventID", (req, res) => { "addEventComment", "error", "Attempt to add comment to event " + - req.params.eventID + - " failed with error: " + - err, + req.params.eventID + + " failed with error: " + + err, ); }); }, @@ -1121,7 +956,9 @@ router.post("/post/reply/:eventID/:commentID", (req, res) => { id: req.params.eventID, }, function (err, event) { - if (!event) return; + if (!event) { + return res.sendStatus(404); + } var parentComment = event.comments.id(commentID); parentComment.replies.push(newReply); event @@ -1131,9 +968,9 @@ router.post("/post/reply/:eventID/:commentID", (req, res) => { "addEventReply", "success", "Reply added to comment " + - commentID + - " in event " + - req.params.eventID, + commentID + + " in event " + + req.params.eventID, ); // broadcast an identical message to all followers, will show in their home timeline const guidObject = crypto.randomBytes(16).toString("hex"); @@ -1150,71 +987,39 @@ router.post("/post/reply/:eventID/:commentID", (req, res) => { event.followers, req.params.eventID, ); - if (sendEmails) { - Event.findOne({ id: req.params.eventID }).then( - (event) => { - const attendeeEmails = event.attendees - .filter( - (o) => - o.status === "attending" && o.email, - ) - .map((o) => o.email); - if (attendeeEmails.length) { - console.log( - "Sending emails to: " + attendeeEmails, - ); - req.app.get("hbsInstance").renderView( - "./views/emails/addEventComment/addEventCommentHtml.handlebars", - { - siteName, - siteLogo, - domain, - eventID: req.params.eventID, - commentAuthor: req.body.replyAuthor, - cache: true, - layout: "email.handlebars", - }, - function (err, html) { - const msg = { - to: attendeeEmails, - from: contactEmail, - subject: `${siteName} : ` + i18next.t("routes.addeventcommentsubject", { eventName: event.name }), - html, - }; - switch (mailService) { - case "sendgrid": - sgMail - .sendMultiple(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - case "nodemailer": - nodemailerTransporter - .sendMail(msg) - .catch((e) => { - console.error( - e.toString(), - ); - res.status( - 500, - ).end(); - }); - break; - } - }, - ); - } else { - console.log("Nothing to send!"); - } - }, - ); - } + Event.findOne({ id: req.params.eventID }).then( + (event) => { + if (!event) { + return res.sendStatus(404); + } + const attendeeEmails = event.attendees + .filter( + (o) => + o.status === "attending" && o.email, + ) + .map((o) => o.email || '') || []; + if (attendeeEmails.length) { + console.log( + "Sending emails to: " + attendeeEmails, + ); + req.emailService.sendEmailFromTemplate({ + to: event?.creatorEmail || config.general.email, + bcc: attendeeEmails, + subject: i18next.t("routes.addeventcommentsubject", { eventName: event.name }), + templateName: "addEventComment", + templateData: { + eventID: req.params.eventID, + commentAuthor: req.body.replyAuthor, + }, + }).catch((e) => { + console.error('error sending removeEventAttendeeHtml email', e.toString()); + res.status(500).end(); + }); + } else { + console.log("Nothing to send!"); + } + }, + ); res.writeHead(302, { Location: "/" + req.params.eventID, }); @@ -1226,11 +1031,11 @@ router.post("/post/reply/:eventID/:commentID", (req, res) => { "addEventReply", "error", "Attempt to add reply to comment " + - commentID + - " in event " + - req.params.eventID + - " failed with error: " + - err, + commentID + + " in event " + + req.params.eventID + + " failed with error: " + + err, ); }); }, @@ -1266,17 +1071,17 @@ router.post("/deletecomment/:eventID/:commentID/:editToken", (req, res) => { .catch((err) => { res.send( "Sorry! Something went wrong (error deleting): " + - err, + err, ); addToLog( "deleteComment", "error", "Attempt to delete comment " + - req.params.commentID + - "from event " + - req.params.eventID + - " failed with error: " + - err, + req.params.commentID + + "from event " + + req.params.eventID + + " failed with error: " + + err, ); }); } else { @@ -1286,10 +1091,10 @@ router.post("/deletecomment/:eventID/:commentID/:editToken", (req, res) => { "deleteComment", "error", "Attempt to delete comment " + - req.params.commentID + - "from event " + - req.params.eventID + - " failed with error: token does not match", + req.params.commentID + + "from event " + + req.params.eventID + + " failed with error: token does not match", ); } }) @@ -1299,11 +1104,11 @@ router.post("/deletecomment/:eventID/:commentID/:editToken", (req, res) => { "deleteComment", "error", "Attempt to delete comment " + - req.params.commentID + - "from event " + - req.params.eventID + - " failed with error: " + - err, + req.params.commentID + + "from event " + + req.params.eventID + + " failed with error: " + + err, ); }); }); |