diff options
Diffstat (limited to 'routes.js')
-rwxr-xr-x | routes.js | 85 |
1 files changed, 81 insertions, 4 deletions
@@ -71,6 +71,11 @@ function render_plain () { } const ical = require('ical'); +const icalGenerator = require('ical-generator'); +const cal = icalGenerator({ + domain: domain, + name: siteName +}); const sgMail = require('@sendgrid/mail'); @@ -568,6 +573,42 @@ router.get('/group/:eventGroupID', (req, res) => { }); }) +router.get('/exportevent/:eventID', (req, res) => { + Event.findOne({ + id: req.params.eventID + }) + .populate('eventGroup') + .then((event) => { + if (event) { + const icalEvent = cal.createEvent({ + start: moment.tz(event.start, event.timezone), + end: moment.tz(event.start, event.timezone), + timezone: event.timezone, + timestamp: moment(), + summary: event.name, + description: event.description, + organizer: { + name: event.hostName ? event.hostName : "Anonymous", + email: event.creatorEmail + }, + location: event.location, + url: 'https://gath.io/' + event.id + }); + + let string = cal.toString(); + console.log(string) + res.send(string); + } + }) + .catch((err) => { + addToLog("exportEvent", "error", "Attempt to export event " + req.params.eventID + " failed with error: " + err); + console.log(err) + res.status(404); + res.render('404', { url: req.url }); + return; + }); +}) + // BACKEND ROUTES //router.post('/login', @@ -697,7 +738,7 @@ router.post('/importevent', (req, res) => { image: '', creatorEmail: creatorEmail, url: '', - hostName: importedEventData.organizer ? importedEventData.organizer.params.CN : "", + hostName: importedEventData.organizer ? importedEventData.organizer.params.CN.replace(/["]+/g, '') : "", viewPassword: '', editPassword: '', editToken: editToken, @@ -1016,11 +1057,46 @@ router.post('/editeventgroup/:eventGroupID/:editToken', (req, res) => { .catch((err) => { console.error(err); res.send('Sorry! Something went wrong!'); addToLog("editEventGroup", "error", "Attempt to edit event group " + req.params.eventGroupID + " failed with error: " + err);}); }); +router.post('/deleteimage/:eventID/:editToken', (req, res) => { + let submittedEditToken = req.params.editToken; + Event.findOne(({ + id: req.params.eventID, + })) + .then((event) => { + if (event.editToken === submittedEditToken) { + // Token matches + if (event.image){ + eventImage = event.image; + } else { + res.status(500).send('This event doesn\'t have a linked image. What are you even doing'); + } + fs.unlink(global.appRoot + '/public/events/' + eventImage, (err) => { + if (err) { + res.status(500).send(err); + addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err); + } + // Image removed + addToLog("deleteEventImage", "success", "Image for event " + req.params.eventID + " deleted"); + event.image = ""; + event.save() + .then(response => { + res.status(200).send('Success'); + }) + .catch(err => { + res.status(500).send(err); + addToLog("deleteEventImage", "error", "Attempt to delete event image for event " + req.params.eventID + " failed with error: " + err); + }) + }); + } + }); +}); + router.post('/deleteevent/:eventID/:editToken', (req, res) => { let submittedEditToken = req.params.editToken; + let eventImage; Event.findOne(({ id: req.params.eventID, - })) + })) .then((event) => { if (event.editToken === submittedEditToken) { // Token matches @@ -1156,7 +1232,8 @@ router.post('/attendevent/:eventID', (req, res) => { const newAttendee = { name: req.body.attendeeName, status: 'attending', - email: req.body.attendeeEmail + email: req.body.attendeeEmail, + removalPassword: req.body.removeAttendancePassword }; Event.findOne({ @@ -1198,7 +1275,7 @@ router.post('/attendevent/:eventID', (req, res) => { router.post('/unattendevent/:eventID', (req, res) => { Event.update( { id: req.params.eventID }, - { $pull: { attendees: { email: req.body.attendeeEmail } } } + { $pull: { attendees: { removalPassword: req.body.removeAttendancePassword } } } ) .then(response => { console.log(response) |