diff --git a/lib/models/subscriptions.js b/lib/models/subscriptions.js index 959be77a..3a3503fe 100644 --- a/lib/models/subscriptions.js +++ b/lib/models/subscriptions.js @@ -214,6 +214,9 @@ module.exports.addConfirmation = (list, email, optInIp, data, callback) => { } setImmediate(() => { + if (data._skip) { + return; + } mailer.sendMail({ from: { diff --git a/routes/subscription.js b/routes/subscription.js index 5158212a..6ee399c1 100644 --- a/routes/subscription.js +++ b/routes/subscription.js @@ -216,6 +216,11 @@ router.post('/:cid/subscribe', passport.parseForm, passport.csrfProtection, (req return res.redirect('/subscription/' + encodeURIComponent(req.params.cid) + '?' + tools.queryParams(req.body)); } + let subTime = Number(req.body.sub) || 0; + let subTest = !!(subTime > Date.now() - 3600 * 1000 && subTime < Date.now() + 3600 * 1000); + let addressTest = !req.body.address; + let testsPass = subTest && addressTest; + lists.getByCid(req.params.cid, (err, list) => { if (!err && !list) { err = new Error('Selected list not found'); @@ -232,6 +237,9 @@ router.post('/:cid/subscribe', passport.parseForm, passport.csrfProtection, (req data[key] = (req.body[key] || '').toString().trim(); } }); + data._address = req.body.address; + data._sub = req.body.sub; + data._skip = !testsPass; data = tools.convertKeys(data); subscriptions.addConfirmation(list, email, req.ip, data, (err, confirmCid) => { diff --git a/views/subscription/subscribe.hbs b/views/subscription/subscribe.hbs index 6cc7eeb2..18f66d61 100644 --- a/views/subscription/subscribe.hbs +++ b/views/subscription/subscribe.hbs @@ -10,6 +10,9 @@ + + +
@@ -121,3 +124,7 @@
+ +