Moved contact form routes to new file

master
Keith Irwin 2017-07-04 12:01:11 -04:00
parent d2295b2df7
commit 7eaaf92c71
No known key found for this signature in database
GPG Key ID: 378933C743E2BBC0
2 changed files with 72 additions and 67 deletions

71
config/routes/contact.js Normal file
View File

@ -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
})

View File

@ -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'});