reCAPTCHAをオプションに
This commit is contained in:
parent
532f8f8e4c
commit
efaa41ba49
7 changed files with 35 additions and 30 deletions
|
@ -41,10 +41,6 @@ redis:
|
||||||
port: 6379
|
port: 6379
|
||||||
pass: example-pass
|
pass: example-pass
|
||||||
|
|
||||||
recaptcha:
|
|
||||||
site_key: example-site-key
|
|
||||||
secret_key: example-secret-key
|
|
||||||
|
|
||||||
# If enabled:
|
# If enabled:
|
||||||
# Server will not cache remote files (Using direct link instead).
|
# Server will not cache remote files (Using direct link instead).
|
||||||
# You can save your storage.
|
# You can save your storage.
|
||||||
|
@ -67,6 +63,11 @@ preventCache: false
|
||||||
# port: 9200
|
# port: 9200
|
||||||
# pass: null
|
# pass: null
|
||||||
|
|
||||||
|
# reCAPTCHA
|
||||||
|
# recaptcha:
|
||||||
|
# site_key: example-site-key
|
||||||
|
# secret_key: example-secret-key
|
||||||
|
|
||||||
# ServiceWorker
|
# ServiceWorker
|
||||||
# sw:
|
# sw:
|
||||||
# # Public key of VAPID
|
# # Public key of VAPID
|
||||||
|
|
|
@ -48,9 +48,9 @@ In root :
|
||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` Checkout to the [latest release](https://github.com/syuilo/misskey/releases/latest)
|
||||||
5. `npm install` Install misskey dependencies.
|
5. `npm install` Install misskey dependencies.
|
||||||
|
|
||||||
*5.* reCAPTCHA tokens
|
*(optional)* reCAPTCHA tokens
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Misskey requires reCAPTCHA tokens.
|
If you want to enable reCAPTCHA, you need to generate reCAPTCHA tokens:
|
||||||
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
Please visit https://www.google.com/recaptcha/intro/ and generate keys.
|
||||||
|
|
||||||
*(optional)* Generating VAPID keys
|
*(optional)* Generating VAPID keys
|
||||||
|
@ -63,13 +63,12 @@ npm install web-push -g
|
||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
|
*5.* Make configuration file
|
||||||
*6.* Make configuration file
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
1. `cp .config/example.yml .config/default.yml` Copy the `.config/example.yml` and rename it to `default.yml`.
|
||||||
2. Edit `default.yml`
|
2. Edit `default.yml`
|
||||||
|
|
||||||
*7.* Build Misskey
|
*6.* Build Misskey
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
Build misskey with the following:
|
Build misskey with the following:
|
||||||
|
@ -85,7 +84,7 @@ If you're still encountering errors about some modules, use node-gyp:
|
||||||
3. `node-gyp build`
|
3. `node-gyp build`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
|
||||||
*8.* That is it.
|
*7.* That is it.
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
Well done! Now, you have an environment that run to Misskey.
|
Well done! Now, you have an environment that run to Misskey.
|
||||||
|
|
||||||
|
|
|
@ -47,10 +47,10 @@ adduser --disabled-password --disabled-login misskey
|
||||||
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
4. `git checkout $(git tag -l | grep -v 'rc[0-9]*$' | sort -V | tail -n 1)` [最新のリリース](https://github.com/syuilo/misskey/releases/latest)を確認
|
||||||
5. `npm install` Misskeyの依存パッケージをインストール
|
5. `npm install` Misskeyの依存パッケージをインストール
|
||||||
|
|
||||||
*5.* reCAPTCHAトークン
|
*(オプション)* reCAPTCHAトークン
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
MisskeyはreCAPTCHAトークンを必要とします。
|
reCAPTCHAを有効にする場合、reCAPTCHAトークンを取得する必要があります。
|
||||||
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを生成してください。
|
https://www.google.com/recaptcha/intro/ にアクセスしてトークンを取得してください。
|
||||||
|
|
||||||
*(オプション)* VAPIDキーペアの生成
|
*(オプション)* VAPIDキーペアの生成
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
@ -61,12 +61,12 @@ npm install web-push -g
|
||||||
web-push generate-vapid-keys
|
web-push generate-vapid-keys
|
||||||
```
|
```
|
||||||
|
|
||||||
*6.* Make configuration file
|
*5.* 設定ファイルを作成する
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
1. `cp .config/example.yml .config/default.yml` `.config/example.yml`をコピーし名前を`default.yml`にする。
|
||||||
2. `default.yml` を編集する。
|
2. `default.yml` を編集する。
|
||||||
|
|
||||||
*7.* Misskeyのビルド
|
*6.* Misskeyのビルド
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
|
|
||||||
次のコマンドでMisskeyをビルドしてください:
|
次のコマンドでMisskeyをビルドしてください:
|
||||||
|
@ -81,8 +81,7 @@ Debianをお使いであれば、`build-essential`パッケージをインスト
|
||||||
3. `node-gyp build`
|
3. `node-gyp build`
|
||||||
4. `npm run build`
|
4. `npm run build`
|
||||||
|
|
||||||
|
*7.* 以上です!
|
||||||
*6.* 以上です!
|
|
||||||
----------------------------------------------------------------
|
----------------------------------------------------------------
|
||||||
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
お疲れ様でした。これでMisskeyを動かす準備は整いました。
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
<p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
|
<p slot="text" v-if="passwordRetypeState == 'not-match'" style="color:#FF1161">%fa:exclamation-triangle .fw% %i18n:@password-not-matched%</p>
|
||||||
</div>
|
</div>
|
||||||
</ui-input>
|
</ui-input>
|
||||||
<div class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div>
|
<div v-if="recaptchaSitekey != null" class="g-recaptcha" :data-sitekey="recaptchaSitekey" style="margin: 16px 0;"></div>
|
||||||
<label class="agree-tou" style="display: block; margin: 16px 0;">
|
<label class="agree-tou" style="display: block; margin: 16px 0;">
|
||||||
<input name="agree-tou" type="checkbox" required/>
|
<input name="agree-tou" type="checkbox" required/>
|
||||||
<p><a :href="touUrl" target="_blank">利用規約</a>に同意する</p>
|
<p><a :href="touUrl" target="_blank">利用規約</a>に同意する</p>
|
||||||
|
@ -115,7 +115,7 @@ export default Vue.extend({
|
||||||
(this as any).api('signup', {
|
(this as any).api('signup', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
password: this.password,
|
password: this.password,
|
||||||
'g-recaptcha-response': (window as any).grecaptcha.getResponse()
|
'g-recaptcha-response': recaptchaSitekey != null ? (window as any).grecaptcha.getResponse() : null
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
(this as any).api('signin', {
|
(this as any).api('signin', {
|
||||||
username: this.username,
|
username: this.username,
|
||||||
|
@ -126,15 +126,19 @@ export default Vue.extend({
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
alert('%i18n:@some-error%');
|
alert('%i18n:@some-error%');
|
||||||
|
|
||||||
(window as any).grecaptcha.reset();
|
if (recaptchaSitekey != null) {
|
||||||
|
(window as any).grecaptcha.reset();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
const head = document.getElementsByTagName('head')[0];
|
if (recaptchaSitekey != null) {
|
||||||
const script = document.createElement('script');
|
const head = document.getElementsByTagName('head')[0];
|
||||||
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
const script = document.createElement('script');
|
||||||
head.appendChild(script);
|
script.setAttribute('src', 'https://www.google.com/recaptcha/api.js');
|
||||||
|
head.appendChild(script);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -40,7 +40,7 @@ export type Source = {
|
||||||
port: number;
|
port: number;
|
||||||
pass: string;
|
pass: string;
|
||||||
};
|
};
|
||||||
recaptcha: {
|
recaptcha?: {
|
||||||
site_key: string;
|
site_key: string;
|
||||||
secret_key: string;
|
secret_key: string;
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,14 +7,16 @@ import generateUserToken from '../common/generate-native-user-token';
|
||||||
import config from '../../../config';
|
import config from '../../../config';
|
||||||
import Meta from '../../../models/meta';
|
import Meta from '../../../models/meta';
|
||||||
|
|
||||||
recaptcha.init({
|
if (config.recaptcha) {
|
||||||
secret_key: config.recaptcha.secret_key
|
recaptcha.init({
|
||||||
});
|
secret_key: config.recaptcha.secret_key
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export default async (ctx: Koa.Context) => {
|
export default async (ctx: Koa.Context) => {
|
||||||
// Verify recaptcha
|
// Verify recaptcha
|
||||||
// ただしテスト時はこの機構は障害となるため無効にする
|
// ただしテスト時はこの機構は障害となるため無効にする
|
||||||
if (process.env.NODE_ENV !== 'test') {
|
if (process.env.NODE_ENV !== 'test' && config.recaptcha != null) {
|
||||||
const success = await recaptcha(ctx.request.body['g-recaptcha-response']);
|
const success = await recaptcha(ctx.request.body['g-recaptcha-response']);
|
||||||
|
|
||||||
if (!success) {
|
if (!success) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ const output = {
|
||||||
|
|
||||||
//#region Define consts
|
//#region Define consts
|
||||||
const consts = {
|
const consts = {
|
||||||
_RECAPTCHA_SITEKEY_: config.recaptcha.site_key,
|
_RECAPTCHA_SITEKEY_: config.recaptcha ? config.recaptcha.site_key : null,
|
||||||
_SW_PUBLICKEY_: config.sw ? config.sw.public_key : null,
|
_SW_PUBLICKEY_: config.sw ? config.sw.public_key : null,
|
||||||
_THEME_COLOR_: constants.themeColor,
|
_THEME_COLOR_: constants.themeColor,
|
||||||
_COPYRIGHT_: constants.copyright,
|
_COPYRIGHT_: constants.copyright,
|
||||||
|
|
Loading…
Reference in a new issue