summaryrefslogtreecommitdiff
path: root/src/server/api/private
diff options
context:
space:
mode:
authorAcid Chicken (硫酸鶏) <root@acid-chicken.com>2020-04-28 14:29:33 +0900
committerAcid Chicken (硫酸鶏) <root@acid-chicken.com>2020-04-28 14:29:33 +0900
commit78608392208cb73351354cda5678daee232159d8 (patch)
treea20fadeac4df4ddbd1773f2ced1c513c5ba74994 /src/server/api/private
parentMerge pull request #6302 from syuilo/patch/autogen/v11 (diff)
downloadsharkey-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.ts13
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