diff options
author | redneckcatholic <redneckcatholic@users.noreply.github.com> | 2022-11-23 00:02:18 -0500 |
---|---|---|
committer | redneckcatholic <redneckcatholic@users.noreply.github.com> | 2022-11-23 01:22:12 -0500 |
commit | d39734bf3fd84c568c15e90d6edb75e68d74b3e1 (patch) | |
tree | bf1820828f450977151bf6dd4cfd12af87a4026c /routes.js | |
parent | e93b23db71df18480b29ed53c1b8247e7f0f83a7 (diff) |
Fix event deletion
Append the editToken to the deleteEvent form action to fix the 404 error
on event deletion.
Refactor broadcastDeleteMessage so that eventDeletion works when
federation is disabled.
Send deletion emails within the callback, otherwise DB lookup will fail
on deleted event id.
Fixes #15
Diffstat (limited to 'routes.js')
-rwxr-xr-x | routes.js | 75 |
1 files changed, 37 insertions, 38 deletions
@@ -1279,47 +1279,46 @@ router.post('/deleteevent/:eventID/:editToken', (req, res) => { 'Location': '/' }); 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: " + attendeeEmails); + req.app.get('hbsInstance').renderView('./views/emails/deleteevent.handlebars', { siteName, siteLogo, domain, eventName: event.name, cache: true, layout: 'email.handlebars' }, function (err, html) { + const msg = { + to: attendeeEmails, + from: { + name: siteName, + email: contactEmail, + address: contactEmail + }, + subject: `${siteName}: ${event.name} was deleted`, + 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!"); + } + } }) .catch((err) => { res.send('Sorry! Something went wrong (error deleting): ' + err); addToLog("deleteEvent", "error", "Attempt to delete event " + req.params.eventID + " failed with error: " + err); }); }); - // Send emails here otherwise they don't exist lol - 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/deleteevent.handlebars', { siteName, siteLogo, domain, eventName: event.name, cache: true, layout: 'email.handlebars' }, function (err, html) { - const msg = { - to: attendeeEmails, - from: { - name: siteName, - email: contactEmail, - address: contactEmail - }, - subject: `${siteName}: ${event.name} was deleted`, - 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!"); - } - }); - } } else { // Token doesn't match |