From a6f8327aa263022ed5d079f8e413bb17480feb7b Mon Sep 17 00:00:00 2001 From: syuilo Date: Wed, 7 Nov 2018 00:08:21 +0900 Subject: reCAPTCHAの設定をDBに保存するように MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/api/private/signup.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/server/api/private') diff --git a/src/server/api/private/signup.ts b/src/server/api/private/signup.ts index eefffd8554..3a367ff119 100644 --- a/src/server/api/private/signup.ts +++ b/src/server/api/private/signup.ts @@ -1,7 +1,6 @@ import * as Koa from 'koa'; import * as bcrypt from 'bcryptjs'; import { generate as generateKeypair } from '../../../crypto_key'; -const recaptcha = require('recaptcha-promise'); import User, { IUser, validateUsername, validatePassword, pack } from '../../../models/user'; import generateUserToken from '../common/generate-native-user-token'; import config from '../../../config'; @@ -10,18 +9,20 @@ import RegistrationTicket from '../../../models/registration-tickets'; import usersChart from '../../../chart/users'; import fetchMeta from '../../../misc/fetch-meta'; -if (config.recaptcha) { - recaptcha.init({ - secret_key: config.recaptcha.secret_key - }); -} - export default async (ctx: Koa.Context) => { const body = ctx.request.body as any; + const instance = await fetchMeta(); + + const recaptcha = require('recaptcha-promise'); + // Verify recaptcha // ただしテスト時はこの機構は障害となるため無効にする - if (process.env.NODE_ENV !== 'test' && config.recaptcha != null) { + if (process.env.NODE_ENV !== 'test' && instance.enableRecaptcha) { + recaptcha.init({ + secret_key: instance.recaptchaSecretKey + }); + const success = await recaptcha(body['g-recaptcha-response']); if (!success) { @@ -34,8 +35,6 @@ export default async (ctx: Koa.Context) => { const password = body['password']; const invitationCode = body['invitationCode']; - const instance = await fetchMeta(); - if (instance && instance.disableRegistration) { if (invitationCode == null || typeof invitationCode != 'string') { ctx.status = 400; -- cgit v1.2.3-freya