1.1.0 • Published 8 months ago

@deamtest/captcha-react v1.1.0

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

@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
CodeName
en-USEnglish
afAfrikaans
arArabic
azAzeri (Latin)
az-AZAzeri (Latin) (Azerbaijan)
be-BYBelarusian (Belarus)
bg-BGBulgarian (Bulgaria)
bs-BABosnian (Bosnia and Herzegovina)
ca-ESCatalan (Spain)
cs-CZCzech (Czech Republic)
cy-GBWelsh (United Kingdom)
da-DKDanish (Denmark)
de-DEGerman (Germany)
el-GRGreek (Greece)
es-ESSpanish (Spain)
et-EEEstonian (Estonia)
eu-ESBasque (Spain)
fi-FIFinnish (Finland)
fr-FRFrench (France)
gl-ESGalician (Spain)
gu-INGujarati (India)
he-ILHebrew (Israel)
hi-INHindi (India)
hr-HRCroatian (Croatia)
hu-HUHungarian (Hungary)
hy-AMArmenian (Armenia)
id-IDIndonesian (Indonesia)
is-ISIcelandic (Iceland)
it-ITItalian (Italy)
ja-JPJapanese (Japan)
ka-GEGeorgian (Georgia)
kk-KZKazakh (Kazakhstan)
kn-INKannada (India)
ko-KRKorean (Korea)
kok-INKonkani (India)
ky-KGKyrgyz (Kyrgyzstan)
lt-LTLithuanian (Lithuania)
lv-LVLatvian (Latvia)
mi-NZMaori (New Zealand)
mk-MKMacedonian
mn-MNMongolian (Mongolia)
mr-INMarathi (India)
ms-MYMalay (Malaysia)
mt-MTMaltese (Malta)
nn-NONorwegian (Nynorsk) (Norway)
nl-NLDutch (Netherlands)
pa-INPunjabi (India)
pl-PLPolish (Poland)
ps-ARPashto (Afghanistan)
pt-PTPortuguese (Portugal)
quQuechua
ro-RORomanian (Romania)
ru-RURussian (Russia)
sa-INSanskrit (India)
sk-SKSlovak (Slovakia)
sl-SISlovenian (Slovenia)
sq-ALAlbanian (Albania)
sr-SPSerbian (Cyrillic)
sv-SESwedish (Sweden)
ta-INTamil (India)
te-INTelugu (India)
th-THThai (Thailand)
tr-TRTurkish (Turkey)
tt-RUTatar (Russia)
tsTsonga
uk-UAUkrainian (Ukraine)
ur-PKUrdu (Islamic Republic of Pakistan)
uz-UZUzbek (Latin) (Uzbekistan)
vi-VNVietnamese (Viet Nam)
xh-ZAXhosa (South Africa)
zh-CNChinese (S)
zh-TWChinese (T)
zu-ZAZulu (South Africa)
1.1.0

8 months ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago