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 {
captchaSvg: captcha.captchaSvg,
captchaExpression: captcha.expr,
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',
codeLength: 5,
})
return {
captchaSvg: captcha.captchaSvg,
captchaExpression: captcha.expr,
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
}
Testing
npm run test
or
npm run tdd