Laravel Recaptchav3

josiasmontag/laravel-recaptchav3 image

Laravel Recaptchav3 stats

Downloads
426.7K
Stars
140
Open Issues
17
Forks
30

View on GitHub →

Recaptcha V3 for Laravel package

Laravel Recaptcha V3

Build Status Total Downloads Latest Stable Version License

Laravel package for Google's Recaptcha V3. This is a lightweight package which focuses on the backend validation of Recaptcha V3 captchas.

Installation

To get started, use Composer to add the package to your project's dependencies:

composer require josiasmontag/laravel-recaptchav3

Add RECAPTCHAV3_SITEKEY and RECAPTCHAV3_SECRET to your .env file. (You can get them here)

RECAPTCHAV3_SITEKEY=sitekey
RECAPTCHAV3_SECRET=secret

Optionally, you can publish the config file:

php artisan vendor:publish --provider="Lunaweb\RecaptchaV3\Providers\RecaptchaV3ServiceProvider"

Usage

Init Recaptcha Javascript

Recaptcha v3 works best when it is loaded on every page to get the most context about interactions. Therefore, add to your header or footer template:

{!! RecaptchaV3::initJs() !!}

Forms

RecaptchaV3::field($action, $name='g-recaptcha-response') creates an invisible input field that gets filled with a Recaptcha token on load.

<form method="post" action="/register">
{!! RecaptchaV3::field('register') !!}
<input type="submit" value="Register"></input>
</form>

Validation

Add the recaptchav3 validator to the rules array. The rule accepts two parameters: The action name and the minimum required score (defaults to 0.5).

$validate = Validator::make(Input::all(), [
'g-recaptcha-response' => 'required|recaptchav3:register,0.5'
]);

Getting the score

Alternatively, you can get the score and take variable action:

// Import the facade class
use Lunaweb\RecaptchaV3\Facades\RecaptchaV3;
// RecaptchaV3::verify($token, $action)
$score = RecaptchaV3::verify($request->get('g-recaptcha-response'), 'register')
if($score > 0.7) {
// go
} elseif($score > 0.3) {
// require additional email verification
} else {
return abort(400, 'You are most likely a bot');
}

Custom validation error message

Add the following values to the custom array in the validation language file:

'custom' => [
'g-recaptcha-response' => [
'recaptchav3' => 'Captcha error message',
],
],

Hiding the ReCAPTCHA Badge

Add to your CSS file:

.grecaptcha-badge { visibility: hidden !important; }

Localization

By default, the package follows the default application locale, which is defined in config/app.php. If you want to change this behavior, you can specify what locale to use by adding a new environment variable :

RECAPTCHAV3_LOCALE=ar

Testing

To make your forms testable, you can mock the RecaptchaV3 facade:

RecaptchaV3::shouldReceive('verify')
->once()
->andReturn(1.0);
Cube

Laravel Newsletter

Join 40k+ other developers and never miss out on new tips, tutorials, and more.


Josiasmontag Laravel Recaptchav3 Related Articles

Google reCaptcha Enterprise Package for Laravel image

Google reCaptcha Enterprise Package for Laravel

Read article
Add Spam Prevention to Laravel Apps with Honey image

Add Spam Prevention to Laravel Apps with Honey

Read article
Laravel Boilerplate 7.0 image

Laravel Boilerplate 7.0

Read article
2019 in Review image

2019 in Review

Read article
5 Ways of Battling Form Spam image

5 Ways of Battling Form Spam

Read article
reCAPTCHA Packages for Laravel image

reCAPTCHA Packages for Laravel

Read article
Laravel Cloud logo

Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Laravel Cloud
Lucky Media logo

Lucky Media

Get Lucky Now - the ideal choice for Laravel Development, with over a decade of experience!

Lucky Media
Celebian logo

Celebian

Celebian is a social media marketing agency specializing in helping their clients go viral on TikTok. Whether you're looking to reach a bigger audience or gain more Tiktok followers, likes, and views, they've got you covered.

Celebian
Tinkerwell logo

Tinkerwell

The must-have code runner for Laravel developers. Tinker with AI, autocompletion and instant feedback on local and production environments.

Tinkerwell
The Certification of Competence for Laravel logo

The Certification of Competence for Laravel

A community-driven, proctored assessment across 4 levels designed to validate real-world Laravel knowledge, from Junior to mastery-level Artisan. Official Vue.js, Official Nuxt, Angular, React, JS certifications also available.

The Certification of Competence for Laravel
Statamic logo

Statamic

The drop-in ready Laravel CMS you’re been waiting for. Go full-stack or headless, flat file or database – it’s up to you.

Statamic