Modal konusunda bir denemem olmadı ama v3 için bir kere şu paketi kullanmıştım. Bir deneyin dilerseniz;
https://github.com/ARCANEDEV/noCAPTCHA
Laravel entegrasyonu için Github issue'larında geliştiricinin bir açıklamasını zamanında not almışım. Onu da iletmiş olayım;
composer require arcanedev/no-captcha
php artisan vendor:publish --provider=Arcanedev\NoCaptcha\NoCaptchaServiceProvider
.env dosyasına Google'dan aldığımız Api keyleri giriyoruz;
NOCAPTCHA_SECRET=XXXXXXXXXX
NOCAPTCHA_SITEKEY=XXXXXXXXXX
Routes/web.php dosyası üzerinden örnek verilmiş ama tabii bir Controllera aktarabilirsin yapıyı;
use Arcanedev\NoCaptcha\Rules\CaptchaRule;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
Route::get('form', function () {
return view('form');
});
Route::post('form', function (Request $request) {
$validator = Validator::make($request->all(), [
//...
'g-recaptcha-response' => ['required', new CaptchaRule],
]);
if ($validator->fails())
return redirect()->back()->withErrors($validator)->withInput();
return view('form')->with('success');
});
View;
@extends('layout')
@section('content')
<form action="{{ url('form') }}" method="POST">
@csrf
<input type="email" name="email"><br>
<button type="submit">Submit</button>
{{ no_captcha()->input('g-recaptcha-response') }}
</form>
@endsection
@push('scripts')
{{ no_captcha()->script() }}
{{ no_captcha()->getApiScript() }}
<script>
grecaptcha.ready(() => {
window.noCaptcha.render('login', (token) => {
document.querySelector('#g-recaptcha-response').value = token;
});
});
</script>
@endpush