hedii/laravel-recaptcha

Google reCAPTCHA v3 for Laravel
55,475 4
Install
composer require hedii/laravel-recaptcha
Latest Version:3.0.1
PHP:^8.0
License:MIT
Last Updated:Mar 5, 2022
Links: GitHub  ·  Packagist
Maintainer: hedii

Build Status Total Downloads License Latest Stable Version

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.

Related Packages

hedii/laravel-gelf-logger

A Laravel package to send logs to a gelf compatible backend like graylog

3,806,282 135
anhskohbo/no-captcha

No CAPTCHA reCAPTCHA For Laravel.

9,573,860 1,847
buzz/laravel-google-captcha

Google captcha for Laravel

1,169,795 207
noylecorp/laravel-recaptcha

Laravel package for Google's ReCAPTCHA service

11,105 3
arcanedev/no-captcha

No CAPTCHA (new Google reCAPTCHA) with Laravel support

751,892 364