arbitrary-torque / laravel-recaptcha
Recaptcha verification and middleware
3.0.3
2026-02-07 03:17 UTC
Requires
- php: >=8.4
- guzzlehttp/guzzle: >7.2.0
- laravel/framework: >12.0
Requires (Dev)
- orchestra/testbench: ^10.9
- phpunit/phpunit: ^11.0
README
Validates recaptcha
Install
composer require arbitrary-torque/laravel-recaptcha
Publish Laravel Config
php artisan vendor:publish --tag=laravel-recaptcha
Add middleware to Http\Kernal
# Add middleware Http\Kernal
protected $routeMiddleware = [
'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
'recaptcha' => \ArbitraryTorque\Recaptcha\Http\Middleware\RecaptchaInvalid::class
];
Add config to .env
RECAPTCHA_ENABLED=0
RECAPTCHA_SITE_KEY=<add_key>
RECAPTCHA_SECRET_KEY=<add_key>
RECAPTCHA_ERROR_MESSAGE="I, for one, welcome our new robot overlords!"
Create blade template or similar view
@if(app(\ArbitraryTorque\Recaptcha::class)->enabled())
@section('js')
@parent
<script src='https://www.google.com/recaptcha/api.js'></script>
@endsection
<div class="field">
<div class="control">
<div class="g-recaptcha" data-sitekey="{{ config('laravel-recaptcha.site-key') }}"></div>
</div>
@foreach ($errors->get('recaptcha') as $error)
<p class="help is-danger">{{ $error }}</p>
@endforeach
</div>
@endif