Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 | 12x 6x 6x 6x 3x 3x 3x 1x 2x 2x 1x 1x 9x 20x 3x | "use strict"; /** * Implementation of reCAPTCHA rate restriction. * * Will validate recaptcha using req.body.recaptchaResponse value. * * Requires ```node-recaptcha2``` package. * * @param {object} [settings] settings for recaptcha, or null to disable * @param {string} settings.privateKey also known as secret key * @param {string} settings.publicKey also known as site key * @return {ExpressMiddlewareFunction} */ function recaptcha(settings = null) { if (settings) { // make sure we have all the settings we need const privateKey = settings.privateKey || false; const publicKey = settings.publicKey || false; if (privateKey && publicKey) { let Recaptcha = require('node-recaptcha2') .Recaptcha; return function (req, res, next) { if (!req.body.recaptchaResponse || typeof req.body.recaptchaResponse !== 'string' || req.body.recaptchaResponse.length < 1) { return res.error('reCAPTCHA response not included'); } (new Recaptcha(publicKey, privateKey, { remoteip: req.clientIp, response: req.body.recaptchaResponse })) .verify((success, errCode) => { if (!success) { res.error('Failed verifying reCAPTCHA'); } else { next(); } }); }; } } return function (req, res, next) { next(); }; } module.exports = recaptcha; |