diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 49a64cda..e36654d3 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -236,6 +236,7 @@ class AdminController extends Controller $recaptcha = Option::form('recaptcha', 'reCAPTCHA', function ($form) { $form->text('recaptcha_sitekey', 'sitekey'); $form->text('recaptcha_secretkey', 'secretkey'); + $form->checkbox('recaptcha_invisible')->label(); })->handle(); return view('admin.options') diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index ce0de1c3..51bb384a 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -88,6 +88,7 @@ class AuthController extends Controller 'extra' => [ 'player' => option('register_with_player_name'), 'recaptcha' => option('recaptcha_sitekey'), + 'invisible' => (bool) option('recaptcha_invisible'), ] ]); } else { diff --git a/config/options.php b/config/options.php index 613f7e51..11debf36 100644 --- a/config/options.php +++ b/config/options.php @@ -52,4 +52,5 @@ return [ 'cdn_address' => '', 'recaptcha_sitekey' => '', 'recaptcha_secretkey' => '', + 'recaptcha_invisible' => 'false', ]; diff --git a/resources/assets/src/components/Captcha.vue b/resources/assets/src/components/Captcha.vue index e605abc4..d6d09258 100644 --- a/resources/assets/src/components/Captcha.vue +++ b/resources/assets/src/components/Captcha.vue @@ -3,8 +3,9 @@
@@ -13,10 +14,10 @@
@@ -50,11 +51,26 @@ export default { }, data() { return { + value: '', time: Date.now(), recaptcha: blessing.extra.recaptcha, + invisible: blessing.extra.invisible, } }, methods: { + execute() { + return new Promise(resolve => { + if (this.invisible) { + this.$refs.recaptcha.$once('verify', resolve) + this.$refs.recaptcha.execute() + } else { + resolve(this.value) + } + }) + }, + onVerify(response) { + this.value = response + }, refreshCaptcha() { if (this.recaptcha) { this.$refs.recaptcha.reset() diff --git a/resources/assets/src/components/mixins/updateCaptcha.ts b/resources/assets/src/components/mixins/updateCaptcha.ts deleted file mode 100644 index b74fb54e..00000000 --- a/resources/assets/src/components/mixins/updateCaptcha.ts +++ /dev/null @@ -1,12 +0,0 @@ -import Vue from 'vue' - -export default Vue.extend({ - data: () => ({ - captcha: '', - }), - methods: { - updateCaptcha(value: string) { - this.captcha = value - }, - }, -}) diff --git a/resources/assets/src/views/auth/Login.vue b/resources/assets/src/views/auth/Login.vue index 52617def..84d53b43 100644 --- a/resources/assets/src/views/auth/Login.vue +++ b/resources/assets/src/views/auth/Login.vue @@ -1,5 +1,5 @@