ossycodes / friendlycaptcha
A simple package to help integrate FriendlyCaptcha in your Laravel applications.
Installs: 13 398
Dependents: 0
Suggesters: 0
Security: 0
Stars: 21
Watchers: 1
Forks: 5
Open Issues: 0
Requires
- php: ^7.4|^8.0
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^6.0|^7.0|^8.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-12-02 08:05:31 UTC
README
This package helps in setting up and validating FriendlyCaptcha widget and response in your Laravel applications
Installation
You can install the package via composer:
composer require ossycodes/friendlycaptcha
Configuration
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
Usage
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 friendly-challenge@0.9.9
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)], ]); }
Testing
composer test
Security
If you discover any security related issues, please email osaigbovoemmanuel1@gmail.com instead of using the issue tracker.
Credits
License
The MIT License (MIT). Please see License File for more information.
How do I say Thank you?
Please buy me a cup of coffee https://www.paypal.com/paypalme/osaigbovoemmanuel , Leave a star and follow me on Twitter .