This package helps in setting up and validating FriendlyCaptcha widget and response in your Laravel applications
You can install the package via composer:
composer require ossycodes/friendlycaptcha
Add FRIENDLY_CAPTCHA_SECRET
, FRIENDLY_CAPTCHA_SITEKEY
and optional FRIENDLY_CAPTCHA_PUZZLE_ENDPOINT
, FRIENDLY_CAPTCHA_VERIFY_ENDPOINT
in .env file :
FRIENDLY_CAPTCHA_SECRET=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
FRIENDLY_CAPTCHA_SITEKEY=XXXXXXXXXXXXXXXX
FRIENDLY_CAPTCHA_PUZZLE_ENDPOINT=https://api.friendlycaptcha.com/api/v1/puzzle #optional
FRIENDLY_CAPTCHA_VERIFY_ENDPOINT=https://api.friendlycaptcha.com/api/v1/siteverify #optional
You can obtain your site-key from here and secret from here
For FriendlyCaptcha widget scripts from a CDN, add the Blade directive @friendlyCaptchaRenderWidgetScripts
in your layout file. This should be added to the <head>
of your document.
<html>
<head>
@friendlyCaptchaRenderWidgetScripts()
</head>
<body>
{{ $slot }}
</body>
</html>
or if you don't want to use the Blade directive you can do this instead
{!! FriendlyCaptcha::renderWidgetScripts() !!}
You have two options on how to add the script tag either from unpkg (default) or from jsdelivr
@friendlyCaptchaRenderWidgetScripts()
or
@friendlyCaptchaRenderWidgetScripts('jsdelivr')
{!! FriendlyCaptcha::renderWidgetScripts() !!}
or
{!! FriendlyCaptcha::renderWidgetScripts('jsdelivr') !!}
You can also host the FriendlyCaptcha widget scripts yourself:
npm install --save [email protected]
And import it in your app:
import "friendly-challenge/widget";
Once that's done, you can call the renderWidget()
method in <form>
to output the appropriate markup (friendlycaptcha widget) with your site key configured.
<form action="/" method="POST">
{!! FriendlyCaptcha::renderWidget() !!}
or with custom theme
{!! FriendlyCaptcha::renderWidget(['dark-theme' => true]) !!}
or with custom language
{!! FriendlyCaptcha::renderWidget(['data-lang' => 'en']) !!}
<button>
Submit
</button>
</form>
Finally On the server, use the provided validation rule to validate the CAPTCHA response.
use Illuminate\Validation\Rule;
public function submit(Request $request)
{
$request->validate([
'frc-captcha-solution' => ['required', Rule::friendlycaptcha()],
]);
}
If you prefer to not use a macro, you can resolve an instance of the rule from the container via dependency injection or the app()
helper.
use Ossycodes\FriendlyCaptcha\Rules\FriendlyCaptcha;
public function submit(Request $request, FriendlyCaptcha $friendlyCaptcha)
{
$request->validate([
'frc-captcha-solution' => ['required', $friendlyCaptcha],
]);
}
use Ossycodes\FriendlyCaptcha\Rules\FriendlyCaptcha;
public function submit(Request $request)
{
$request->validate([
'frc-captcha-solution' => ['required', app(FriendlyCaptcha::class)],
]);
}
composer test
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.
Please buy me a cup of coffee https://www.paypal.com/paypalme/osaigbovoemmanuel , Leave a star and follow me on Twitter .