From 8a0742d9a8f6ac3a47abcdace164f880eb1728e7 Mon Sep 17 00:00:00 2001 From: Isaac Vallee Date: Wed, 22 Dec 2021 10:05:38 -0800 Subject: [PATCH] change append to prepend --- .../cartridge/controllers/ContactUs.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/int_recaptcha/int_recaptcha/cartridge/controllers/ContactUs.js b/int_recaptcha/int_recaptcha/cartridge/controllers/ContactUs.js index 911dab4..a5d19af 100644 --- a/int_recaptcha/int_recaptcha/cartridge/controllers/ContactUs.js +++ b/int_recaptcha/int_recaptcha/cartridge/controllers/ContactUs.js @@ -2,8 +2,11 @@ var server = require('server'); +// First, let's extend the ContactUs-Landing route +// to add recaptcha data to the template view server.append('Landing', function(req, res, next) { res.setViewData({ + // Recaptcha API script URL recaptchaUrl: 'https://www.google.com/recaptcha/api.js', siteKey: '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI' // Test Site Key from Google }); @@ -11,21 +14,26 @@ server.append('Landing', function(req, res, next) { next(); }); -server.append('Subscribe', function(req, res, next) { +// Now we need to extend ContactUs-Subscribe, to add our logic +// that invokes the recaptcha service +// We prepend here to ensure that an invalid response is caught before the email is sent +server.prepend('Subscribe', function(req, res, next) { + var recaptchaService = require('*/cartridge/scripts/services/recaptcha'); // Token automatically added to request by recaptcha var token = req.form['g-recaptcha-response']; // Add required parameters for validation call var params = { // This is a test secret from Google - // In practice, do not hardcode this. It's better to store - // In a custom preference or service credential Configuration - secret: '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe', // Test secret key from Google + // In practice, do not hardcode this. + // It's better to store in a custom preference or service credential configuration + secret: '6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe', response: token }; // Calls recaptcha service // Returns a Service class instance + // (start with a hardcoded fail) var validationResult = recaptchaService.call(params); // Actual response from Google