@deamtest/captcha-react
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

@deamtest/captcha-react

A Deamtest component for React

Installation

yarn add @deamtest/captcha-react
npm install @deamtest/captcha-react --save

Usage

frontend (ReactJS)

import Captcha from '@deamtest/captcha-react';

const deamAppId = '**********';
const deamApiKey = 'deamtest-*******************************************';

export default () => {
  const onVerify = token => console.log(token);
  return (
    <Captcha lang="en-US" appId={deamAppId} apiKey={deamApiKey} onVerify={onVerify} />
  )
};

backend (NodeJs)

import express from 'express';
import axios from 'axios';
import crypto from 'crypto';

const deamApiUrl    = 'https://api.deamtest.com';
const deamAppId     = '**********';
const deamApiKey    = 'deamtest-*******************************************';
const deamApiSecret = '******************'

const verifyCaptcha = async (captchaToken: string) => {
  try {
    const src = new TextEncoder().encode(deamApiSecret.slice(0,16));
    const iv = Buffer.from(src.buffer, src.byteOffset, src.byteLength);
    let buf = deamApiKey.slice(9).split('').map((c) => {
      switch (c) { 
        case '-': return '+'; 
        case '_': return '/'; 
        default: return c;
      }
    }).join('');
    const key = crypto.createSecretKey(Buffer.from(buf, 'base64'));
    const cipher = crypto.createCipheriv('aes-256-cbc', key, iv);
    const data = Buffer.concat([
      cipher.update(new TextEncoder().encode(captchaToken)), cipher.final()
    ]).toString('base64');

    const response = await axios.post(deamApiUrl, {
      jsonrpc:  "2.0", 
      id:       Math.round(Math.random() * 1e6), 
      method:   'deam-verify', 
      params:   [deamAppId, data]
    });
    if (response.data.error) return response.data.error;
    if (response.data.result) return response.data.result;
  } catch (error) {
    console.log(error);
  }
}

const router = express.Router();

router.post("/",async (req: express.Request, res: express.Response) => {
  const {captcha} = req.body as {captcha: string};
  const captchaResult = await verifyCaptcha(captcha);
  if (captchaResult===true) {
    res.json({status: 'ok'});
  } else {
    res.json({status: 'failed'});
  }
})

How can I get API Key freely?

https://deamtest.com/

What's new in v1.1.0?

  1. added default dark them and supported custom theme
  2. supported multi language
Code Name
en-US English
af Afrikaans
ar Arabic
az Azeri (Latin)
az-AZ Azeri (Latin) (Azerbaijan)
be-BY Belarusian (Belarus)
bg-BG Bulgarian (Bulgaria)
bs-BA Bosnian (Bosnia and Herzegovina)
ca-ES Catalan (Spain)
cs-CZ Czech (Czech Republic)
cy-GB Welsh (United Kingdom)
da-DK Danish (Denmark)
de-DE German (Germany)
el-GR Greek (Greece)
es-ES Spanish (Spain)
et-EE Estonian (Estonia)
eu-ES Basque (Spain)
fi-FI Finnish (Finland)
fr-FR French (France)
gl-ES Galician (Spain)
gu-IN Gujarati (India)
he-IL Hebrew (Israel)
hi-IN Hindi (India)
hr-HR Croatian (Croatia)
hu-HU Hungarian (Hungary)
hy-AM Armenian (Armenia)
id-ID Indonesian (Indonesia)
is-IS Icelandic (Iceland)
it-IT Italian (Italy)
ja-JP Japanese (Japan)
ka-GE Georgian (Georgia)
kk-KZ Kazakh (Kazakhstan)
kn-IN Kannada (India)
ko-KR Korean (Korea)
kok-IN Konkani (India)
ky-KG Kyrgyz (Kyrgyzstan)
lt-LT Lithuanian (Lithuania)
lv-LV Latvian (Latvia)
mi-NZ Maori (New Zealand)
mk-MK Macedonian
mn-MN Mongolian (Mongolia)
mr-IN Marathi (India)
ms-MY Malay (Malaysia)
mt-MT Maltese (Malta)
nn-NO Norwegian (Nynorsk) (Norway)
nl-NL Dutch (Netherlands)
pa-IN Punjabi (India)
pl-PL Polish (Poland)
ps-AR Pashto (Afghanistan)
pt-PT Portuguese (Portugal)
qu Quechua
ro-RO Romanian (Romania)
ru-RU Russian (Russia)
sa-IN Sanskrit (India)
sk-SK Slovak (Slovakia)
sl-SI Slovenian (Slovenia)
sq-AL Albanian (Albania)
sr-SP Serbian (Cyrillic)
sv-SE Swedish (Sweden)
ta-IN Tamil (India)
te-IN Telugu (India)
th-TH Thai (Thailand)
tr-TR Turkish (Turkey)
tt-RU Tatar (Russia)
ts Tsonga
uk-UA Ukrainian (Ukraine)
ur-PK Urdu (Islamic Republic of Pakistan)
uz-UZ Uzbek (Latin) (Uzbekistan)
vi-VN Vietnamese (Viet Nam)
xh-ZA Xhosa (South Africa)
zh-CN Chinese (S)
zh-TW Chinese (T)
zu-ZA Zulu (South Africa)

Readme

Keywords

Package Sidebar

Install

npm i @deamtest/captcha-react

Weekly Downloads

0

Version

1.1.0

License

MIT

Unpacked Size

102 kB

Total Files

4

Last publish

Collaborators

  • leopawel