Moved contact form routes to new file
parent
d2295b2df7
commit
7eaaf92c71
|
@ -0,0 +1,71 @@
|
|||
'use strict';
|
||||
|
||||
const env = require('../env/env.js'),
|
||||
request = require('request'),
|
||||
mw = require('../middleware.js'),
|
||||
mail = require('../mail.js'),
|
||||
router = require('express').Router();
|
||||
|
||||
module.exports = router
|
||||
|
||||
// Display contact form
|
||||
.get('/contact', (req,res)=>{
|
||||
res.render('contact', {active:'contact',
|
||||
sitekey: env.recaptchaSitekey
|
||||
});
|
||||
})
|
||||
.post('/contact', (req,res,next)=>{
|
||||
|
||||
// Confirm captcha
|
||||
request.post( 'https://www.google.com/recaptcha/api/siteverify', {form:{
|
||||
secret: env.recaptchaSecret,
|
||||
response: req.body['g-recaptcha-response'],
|
||||
remoteip: req.ip
|
||||
}}, (err, response, body)=>{
|
||||
|
||||
// Check for errors
|
||||
if (err){
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
if (response.statusCode!==200) {
|
||||
let err = new Error('Bad response from reCaptcha service');
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
else {
|
||||
|
||||
// Captcha succeeded
|
||||
if (JSON.parse(body).success){
|
||||
mail.send({
|
||||
from: `${req.body.name} <${req.body.email}>`,
|
||||
to: `Tracman Contact <contact@tracman.org>`,
|
||||
subject: req.body.subject||'A message',
|
||||
text: req.body.message
|
||||
})
|
||||
.then(()=>{
|
||||
req.flash('success', `Your message has been sent. `);
|
||||
res.redirect(req.session.next || '/');
|
||||
})
|
||||
.catch((err)=>{
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
});
|
||||
}
|
||||
|
||||
// Captcha failed
|
||||
else {
|
||||
let err = new Error('Failed reCaptcha');
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
//TODO: Check req.body.g-recaptcha-response
|
||||
|
||||
|
||||
|
||||
})
|
|
@ -1,10 +1,6 @@
|
|||
'use strict';
|
||||
|
||||
const mw = require('../middleware.js'),
|
||||
env = require('../env/env.js'),
|
||||
mail = require('../mail.js'),
|
||||
router = require('express').Router(),
|
||||
request = require('request'),
|
||||
const router = require('express').Router(),
|
||||
slug = require('slug'),
|
||||
xss = require('xss'),
|
||||
User = require('../models.js').user;
|
||||
|
@ -21,68 +17,6 @@ module.exports = router
|
|||
res.render('help', {active:'help'});
|
||||
})
|
||||
|
||||
// Contact
|
||||
.get('/contact', (req,res)=>{
|
||||
res.render('contact', {active:'contact',
|
||||
sitekey: env.recaptchaSitekey
|
||||
});
|
||||
})
|
||||
.post('/contact', (req,res,next)=>{
|
||||
|
||||
// Confirm captcha
|
||||
request.post( 'https://www.google.com/recaptcha/api/siteverify', {form:{
|
||||
secret: env.recaptchaSecret,
|
||||
response: req.body['g-recaptcha-response'],
|
||||
remoteip: req.ip
|
||||
}}, (err, response, body)=>{
|
||||
|
||||
// Check for errors
|
||||
if (err){
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
if (response.statusCode!==200) {
|
||||
let err = new Error('Bad response from reCaptcha service');
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
else {
|
||||
|
||||
// Captcha succeeded
|
||||
if (JSON.parse(body).success){
|
||||
mail.send({
|
||||
from: `${req.body.name} <${req.body.email}>`,
|
||||
to: `Tracman Contact <contact@tracman.org>`,
|
||||
subject: req.body.subject||'A message',
|
||||
text: req.body.message
|
||||
})
|
||||
.then(()=>{
|
||||
req.flash('success', `Your message has been sent. `);
|
||||
res.redirect(req.session.next || '/');
|
||||
})
|
||||
.catch((err)=>{
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
});
|
||||
}
|
||||
|
||||
// Captcha failed
|
||||
else {
|
||||
let err = new Error('Failed reCaptcha');
|
||||
mw.throwErr(err,req);
|
||||
res.redirect('/contact');
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
//TODO: Check req.body.g-recaptcha-response
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
||||
// Terms of Service and Privacy Policy
|
||||
.get('/terms', (req,res)=>{
|
||||
res.render('terms', {active:'terms'});
|
||||
|
|
Loading…
Reference in New Issue