hedii / laravel-recaptcha
Google reCAPTCHA v3 for Laravel
Installs: 55 406
Dependents: 0
Suggesters: 0
Security: 0
Stars: 5
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.2
- laravel/framework: ^9.0
Requires (Dev)
- orchestra/testbench: ^7.0
README
Laravel Recaptcha
Google reCAPTCHA v3 for Laravel 7.0+
Table of contents
Installation
Install via composer
composer require hedii/laravel-recaptcha
Publish the configuration
php artisan vendor:publish --provider="Hedii\LaravelRecaptcha\RecaptchaServiceProvider"
The configuration file located at config/recaptcha.php
looks like this:
return [ /** * The recaptcha site key. */ 'site_key' => env('RECAPTCHA_SITE_KEY', ''), /** * The recaptcha site secret. */ 'secret_key' => env('RECAPTCHA_SECRET_KEY', ''), /** * The minimum score (from 0.0 to 1.0) a recaptcha response must have to be * valid. 1.0 is very likely a good interaction, 0.0 is very likely a bot. */ 'minimum_score' => env('RECAPTCHA_MINIMUM_SCORE', 0.7), ];
Register a new website on Google Recaptcha admin, and select reCAPTCHA v3
Edit .env
to add the required environment variables
RECAPTCHA_SITE_KEY=xxxxxxxxxxxxxxxxxxx
RECAPTCHA_SECRET_KEY=xxxxxxxxxxxxxxxxxxx
RECAPTCHA_MINIMUM_SCORE=0.7
Usage
Insert the required javascript on a html form using the following method. You can set an action name as the first parameter, and the id of the recaptcha hidden html field as a second parameter.
<form method="post"> <!-- ...the rest of the form... --> {!! Recaptcha::script('contact_form', 'recaptchaResponse') !!} <!-- make sure you place a hidden input nammed recaptcha_response --> <input type="hidden" name="recaptcha_response" id="recaptchaResponse"> <input type="submit"> </form>
On your controller, you can verify the recaptcha score like this:
public function store(\Hedii\LaravelRecaptcha\Recaptcha $recaptcha) { if (! $recaptcha->isValid()) { // the recaptcha score is lower than the configured minimal score, you // can throw a validation exception or do anything else throw ValidationException::withMessages([ 'recaptcha' => 'Recaptcha validation failed...' ]); } // here the score is valid }
If you prefer to use the Facade:
public function store() { if (! Recaptcha::isValid()) { // the recaptcha score is lower than the configured minimal score, you // can throw a validation exception or do anything else throw ValidationException::withMessages([ 'recaptcha' => 'Recaptcha validation failed...' ]); } // here the score is valid }
License
laravel-recaptcha is released under the MIT Licence. See the bundled LICENSE file for details.