@solargis/lambda-captcha
v4.0.0
Published
Generates captchas that can be verified decentrally, e.g. in Lambda function
Downloads
141
Readme
lambda-captcha
Forked from: fourcube/lambda-captcha
Generates captchas that can be verified decentrally.
Description
This is heavily inspired by svg-captcha, but written in TypeScript. It also allows you to pass the generated captcha expressions together with the user-supplied captcha solution, so you can verify the results independently. The captcha expressions are encrypted, so they are not machine readable.
Usage
Generating a captcha
const lambdaCaptcha = require('@solargis/lambda-captcha')
const SECRET = process.env.CAPTCHA_SECRET
function generateCaptcha() {
const captchaConfig = lambdaCaptcha.LambdaCaptchaConfigManager.default(SECRET)
const captcha = lambdaCaptcha.create(captchaConfig)
return {
// The captcha SVG that you can display inside e.g. a form
captchaSvg: captcha.captchaSvg,
// This is the un-encrypted expression of the captcha.
captchaExpression: captcha.expr,
// This is the encrypted expression of the captcha.
// Pass it along with your server side verification requests.
encryptedCaptchaExpression: captcha.encryptedExpr
}
}
Generating a captcha in code mode
const lambdaCaptcha = require('@solargis/lambda-captcha')
const SECRET = process.env.CAPTCHA_SECRET
function generateCaptcha() {
const captchaConfig = lambdaCaptcha.LambdaCaptchaConfigManager.default(SECRET)
const captcha = lambdaCaptcha.create({
...captchaConfig,
mode: 'code', // default mode is 'math'
codeLength: 5, // optional, default codeLength is 5
})
return {
// The captcha SVG that you can display inside e.g. a form
captchaSvg: captcha.captchaSvg,
// This is the un-encrypted expression of the captcha.
captchaExpression: captcha.expr,
// This is the encrypted expression of the captcha.
// Pass it along with your server side verification requests.
encryptedCaptchaExpression: captcha.encryptedExpr
}
}
Verifying a captcha
const lambdaCaptcha = require('@solargis/lambda-captcha')
const SECRET = process.env.CAPTCHA_SECRET
function verify(encryptedCaptchaExpression, captchaSolution) {
const captchaResult = captcha.verify(captchaExpression, captchaSolution, SECRET)
return captchaResult // either true on success or false if the solution was wrong
}
Testing
npm run test
or
npm run tdd