Browse Source

Finalized the contact form's code for the website.

pull/4/head
jrtechs 6 years ago
parent
commit
6f1cda016f
2 changed files with 43 additions and 6 deletions
  1. +42
    -6
      includes/contact.js
  2. +1
    -0
      includes/messageSent.html

+ 42
- 6
includes/contact.js View File

@ -1,34 +1,47 @@
/** /**
* File which sends emails to me from
* a captcha protected form on the contact
* page.
*
* @author Jeffery Russell 8-19-18 * @author Jeffery Russell 8-19-18
*/ */
//used for file IO //used for file IO
const utils = require('../utils/utils.js'); const utils = require('../utils/utils.js');
//used for static files //used for static files
const includes = require('../includes/includes'); const includes = require('../includes/includes');
//for parsing post data //for parsing post data
const qs = require('querystring'); const qs = require('querystring');
//cleans form submission
const sanitizer = require('sanitizer'); const sanitizer = require('sanitizer');
//used to send post data for the captcha
const Request = require('request'); const Request = require('request');
//sends the email using a throw away gmail account
const nodemailer = require("nodemailer"); const nodemailer = require("nodemailer");
//agent for sending the email
const smtpTransport = require('nodemailer-smtp-transport'); const smtpTransport = require('nodemailer-smtp-transport');
//captcha secret
const CAPTCHA_SECRET = utils.getFileLine("../captcha_secret"); const CAPTCHA_SECRET = utils.getFileLine("../captcha_secret");
//password to gmail account
const EMAIL_PASSWORD = utils.getFileLine("../email_password"); const EMAIL_PASSWORD = utils.getFileLine("../email_password");
/**
* Verifies if the captcha response recieved from the post data was
* valid, or are bots trying to get around the captcha
*
* @param data captcha data from post request
* @returns {Promise} resolves whether the captcha is valid
*/
const verifyCapcha = function(data) const verifyCapcha = function(data)
{ {
const recaptcha_url = "https://www.google.com/recaptcha/api/siteverify?" + const recaptcha_url = "https://www.google.com/recaptcha/api/siteverify?" +
@ -64,7 +77,14 @@ const verifyCapcha = function(data)
}; };
/**
* Sends a email to my personal emaail address using a throw away
* gmail account
*
* @param name from contact form
* @param email from contact form
* @param message from contact form
*/
const sendEmail = function(name, email, message) const sendEmail = function(name, email, message)
{ {
@ -103,7 +123,14 @@ const sendEmail = function(name, email, message)
}; };
/**
* If there was post data on the contact page, it processes it to see
* if it was a valid captcha request and sends an email. If no post data was sent,
* the normal form is displayed
*
* @param request -- main express request
* @returns {Promise} renders the html of the contact widget
*/
const processContactPage = function(request) const processContactPage = function(request)
{ {
return new Promise(function(resolve, reject) return new Promise(function(resolve, reject)
@ -144,6 +171,15 @@ const processContactPage = function(request)
module.exports = module.exports =
{ {
/**
* Displays the contact page along with the header, sidebar, and footer.
* This uses the admin header because it doesn't need any minified css
* which has been purged of some css classes which are not used in any
* of the blog posts.
*
* @param request -- main express request
* @param result -- renders the html of the contact page
*/
main: function(request, result) main: function(request, result)
{ {
result.writeHead(200, {'Content-Type': 'text/html'}); result.writeHead(200, {'Content-Type': 'text/html'});

+ 1
- 0
includes/messageSent.html View File

@ -1,3 +1,4 @@
<div class='col-md-8'> <div class='col-md-8'>
<h1>Message Sent</h1> <h1>Message Sent</h1>
<p>I will try to get back to you within a week. Thank you for messaging me.</p>
</div> </div>

Loading…
Cancel
Save