diff options
| author | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2020-04-28 14:29:33 +0900 |
|---|---|---|
| committer | Acid Chicken (硫酸鶏) <root@acid-chicken.com> | 2020-04-28 14:29:33 +0900 |
| commit | 78608392208cb73351354cda5678daee232159d8 (patch) | |
| tree | a20fadeac4df4ddbd1773f2ced1c513c5ba74994 /src/server/api/private | |
| parent | Merge pull request #6302 from syuilo/patch/autogen/v11 (diff) | |
| download | sharkey-78608392208cb73351354cda5678daee232159d8.tar.gz sharkey-78608392208cb73351354cda5678daee232159d8.tar.bz2 sharkey-78608392208cb73351354cda5678daee232159d8.zip | |
Add support for hCaptcha
Diffstat (limited to 'src/server/api/private')
| -rw-r--r-- | src/server/api/private/signup.ts | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index 79ee74389c..e23fe43583 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -1,5 +1,6 @@ import * as Koa from 'koa'; import { fetchMeta } from '../../../misc/fetch-meta'; +import { verify } from 'hcaptcha'; import * as recaptcha from 'recaptcha-promise'; import { Users, RegistrationTickets } from '../../../models'; import { signup } from '../common/signup'; @@ -9,8 +10,18 @@ export default async (ctx: Koa.Context) => { const instance = await fetchMeta(true); - // Verify recaptcha + // Verify *Captcha // ただしテスト時はこの機構は障害となるため無効にする + if (process.env.NODE_ENV !== 'test' && instance.enableHcaptcha && instance.hcaptchaSecretKey) { + const success = await verify(instance.hcaptchaSecretKey, body['hcaptcha-response']).then( + ({ 'error-codes': x }) => !x || !x.length, + () => false, + ); + + if (!success) { + ctx.throw(400, 'hcaptcha-failed'); + } + } if (process.env.NODE_ENV !== 'test' && instance.enableRecaptcha && instance.recaptchaSecretKey) { recaptcha.init({ secret_key: instance.recaptchaSecretKey |