lambda-studio / turnstile
2.1.1
2023-12-09 00:08 UTC
Requires
- php: ^8.1
- illuminate/broadcasting: ^8.0|^9.0
- illuminate/contracts: ^8.0|^9.0
- illuminate/http: ^8.0|^9.0
- illuminate/support: ^8.0|^9.0
README
Quick and easy implementation of Turnstile for Laravel.
Example request validation
Route::post('/test', function (Request $request) { $request->validate([ 'cf-turnstile-response' => [ 'required', 'string', app(\LambdaStudio\Turnstile\Rules\ValidTurnstile::class), ], ]); dd($request->input('name')); });
Just apply the rule to the cf-turnstile-response
field.
Example frontend implementation
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <form method="POST" action="{{ url('/test') }}"> @csrf <input type="text" name="name" placeholder="Name"> <div class="cf-turnstile" data-sitekey="{{ config('turnstile.site_key') }}"></div> <input type="submit" value="Submit"> </form> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> <script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script> </body> </html>
Todo
- Add blade macros
- @turnstile(): Adds the turnstile division with the site_key on it.
- @turnstyleScript(): Adds the turnstile script tag.