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;
|