reCAPTCHAの設定をDBに保存するように
This commit is contained in:
@ -88,6 +88,27 @@ export const meta = {
|
||||
desc: {
|
||||
'ja-JP': 'リモートのファイルをキャッシュするか否か'
|
||||
}
|
||||
},
|
||||
|
||||
enableRecaptcha: {
|
||||
validator: $.bool.optional,
|
||||
desc: {
|
||||
'ja-JP': 'reCAPTCHAを使用するか否か'
|
||||
}
|
||||
},
|
||||
|
||||
recaptchaSiteKey: {
|
||||
validator: $.str.optional,
|
||||
desc: {
|
||||
'ja-JP': 'reCAPTCHA site key'
|
||||
}
|
||||
},
|
||||
|
||||
recaptchaSecretKey: {
|
||||
validator: $.str.optional,
|
||||
desc: {
|
||||
'ja-JP': 'reCAPTCHA secret key'
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -139,6 +160,18 @@ export default define(meta, (ps) => new Promise(async (res, rej) => {
|
||||
set.cacheRemoteFiles = ps.cacheRemoteFiles;
|
||||
}
|
||||
|
||||
if (ps.enableRecaptcha !== undefined) {
|
||||
set.enableRecaptcha = ps.enableRecaptcha;
|
||||
}
|
||||
|
||||
if (ps.recaptchaSiteKey !== undefined) {
|
||||
set.recaptchaSiteKey = ps.recaptchaSiteKey;
|
||||
}
|
||||
|
||||
if (ps.recaptchaSecretKey !== undefined) {
|
||||
set.recaptchaSecretKey = ps.recaptchaSecretKey;
|
||||
}
|
||||
|
||||
await Meta.update({}, {
|
||||
$set: set
|
||||
}, { upsert: true });
|
||||
|
@ -35,7 +35,7 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||
}
|
||||
});
|
||||
|
||||
res({
|
||||
const response: any = {
|
||||
maintainer: config.maintainer,
|
||||
|
||||
version: pkg.version,
|
||||
@ -60,24 +60,32 @@ export default define(meta, (ps, me) => new Promise(async (res, rej) => {
|
||||
driveCapacityPerLocalUserMb: instance.localDriveCapacityMb,
|
||||
driveCapacityPerRemoteUserMb: instance.remoteDriveCapacityMb,
|
||||
cacheRemoteFiles: instance.cacheRemoteFiles,
|
||||
recaptchaSitekey: config.recaptcha ? config.recaptcha.site_key : null,
|
||||
recaptchaSiteKey: instance.enableRecaptcha ? instance.recaptchaSiteKey : null,
|
||||
swPublickey: config.sw ? config.sw.public_key : null,
|
||||
hidedTags: (me && me.isAdmin) ? instance.hidedTags : undefined,
|
||||
bannerUrl: instance.bannerUrl,
|
||||
maxNoteTextLength: instance.maxNoteTextLength,
|
||||
|
||||
emojis: emojis,
|
||||
};
|
||||
|
||||
features: ps.detail ? {
|
||||
if (ps.detail) {
|
||||
response.features = {
|
||||
registration: !instance.disableRegistration,
|
||||
localTimeLine: !instance.disableLocalTimeline,
|
||||
elasticsearch: config.elasticsearch ? true : false,
|
||||
recaptcha: config.recaptcha ? true : false,
|
||||
recaptcha: instance.enableRecaptcha,
|
||||
objectStorage: config.drive && config.drive.storage === 'minio',
|
||||
twitter: config.twitter ? true : false,
|
||||
github: config.github ? true : false,
|
||||
serviceWorker: config.sw ? true : false,
|
||||
userRecommendation: config.user_recommendation ? config.user_recommendation : {}
|
||||
} : undefined
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
if (me && me.isAdmin) {
|
||||
response.hidedTags = instance.hidedTags;
|
||||
response.recaptchaSecretKey = instance.recaptchaSecretKey;
|
||||
}
|
||||
|
||||
res(response);
|
||||
}));
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user