1.0.1 • Published 5 months ago

@caesar003/slider-captcha-core v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
5 months ago

@slider-captcha

Generate a puzzle slider captcha and display with React component.\ npm.io

Installation

React frontend:

npm i @slider-captcha/react

Backend:

npm i @slider-captcha/core

Usage

React:

import SliderCaptcha from '@slider-captcha/react';

function verifiedCallback(token) {
  console.log('Captcha token: ' + token);
}

function App() {
  return (
    <SliderCaptcha
      create="https://example.com/captcha/create"
      verify="https://example.com/captcha/verify"
      callback={verifiedCallback}
    />
  );
}

Express:

var sliderCaptcha = require('@slider-captcha/core');

app.get('/captcha/create', function (req, res) {
  sliderCaptcha.create()
    .then(function ({data, solution}) {
      req.session.captcha = solution;
      req.session.save();
      res.status(200).send(data);
    });
});

app.post('/captcha/verify', function (req, res) {
  sliderCaptcha.verify(req.session.captcha, req.body)
    .then(function (verification) {
      if (verification.result === 'success') {
        req.session.token = verification.token;
        req.session.save();
      }
      res.status(200).send(verification);
    });
});

React component props

NameTypeDefaultDescription
callbackfunc(token) => console.log(token)Called with token on successful verification
createstring or funccaptcha/createEither the URL to fetch data from or a function () returning a promise which resolves with { background, slider } as PNG buffers
verifystring or funccaptcha/verifyEither the URL to fetch data from or a function (response, trail) returning a promise which resolves with { result, token }
text{ anchor: string, challenge: string }{ anchor: 'I am human', challenge: 'Slide to finish the puzzle' }Text used for captcha
variantstringlightUse 'light' for light theme, 'dark' for dark theme

Light:\ npm.io\ Dark:\ npm.io

Create captcha options

sliderCaptcha.create({option: value})

NameTypeDefaultDescription
imagebufferrandomly generated patternBackground image used for captcha - resized to 250x150
fillstring#000Color used in overlay of puzzle piece on background
strokestring#fffColor for outline of puzzle piece
strokeWidthstring0.4Puzzle piece outline width
opacitystring0.5Opacity of puzzle piece overlay on background
distortboolfalseApply distortion to the puzzle piece
rotateboolfalseApply a random rotation to the puzzle piece

With rotation and distortion: \ npm.io

Verify captcha options

sliderCaptcha.verify(captcha, {response, trail: {x, y}}, {option: value})

NameTypeDefaultDescription
tolerancenumber7Allowed deviation from true captcha value