const express = require('express'); const fs = require('fs'); const sendmail = require('sendmail')({silent: true}); const uniqid = require('uniqid'); const path = require('path'); var router = express.Router(); const confirmationsPath = '../database/confirmations.json'; const writeJsonFile = (file, data) => { fs.writeFileSync(path.join(__dirname, file), JSON.stringify(data)); }; const readJsonFile = (file) => { return JSON.parse(fs.readFileSync(path.join(__dirname, file)).toString()); }; router.post('/', (req, res, _next) => { const id = uniqid(); sendmail({ from: 'surpise-box@jobbel.nl', to: req.body.email, subject: 'test sendmail', html: `

Deze email is verzonden omdat u surprise box ${req.body.number} voor de kerstmarkt van Het Heerenlanden heeft aangevraagd.
Om uw aanvraag te bevestigen, moet u om de volgende link klikken:
http://localhost:3000/mail/validate/${id}

Met vriendelijk groet,
het surprise box team van Het Heerenlanden

`, }, function(err, reply) { if (err) { res.json({result: {success: false, data: err}}); } else { writeJsonFile(confirmationsPath, { ...readJsonFile(confirmationsPath), [id]: { 'number': Number(req.body.number), 'timestamp': Date.now() } }) res.json({result: {success: true, data: reply}}); } }); }); router.get('/validate/:id', (req, res, _next) => { const data = readJsonFile(confirmationsPath); const id = req.params.id; // If id is found and the user is in time if (data[id] && Date.now() <= (data[id].timestamp + 3600000 /* one hour in milliseconds */)) { // send success result res.json({result: {success: true, data: data[id].number}}); // Delete the record delete data[id]; writeJsonFile(confirmationsPath, data); } else { // Else if the id is found but the time is expired if (data[id] && Date.now() > (data[id].timestamp + 3600000)) { // send result res.json({result: {success: false, data: 'expired'}}); // delete the record delete data[id]; writeJsonFile(confirmationsPath, data); // If the id is not found } else { res.json({result: {success: false, data: 'ID not found'}}); } } }); module.exports = router;