Download the PHP package hansdeboeck/laravel-turnstile without Composer
On this page you can find all versions of the php package hansdeboeck/laravel-turnstile. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download hansdeboeck/laravel-turnstile
More information about hansdeboeck/laravel-turnstile
Files in hansdeboeck/laravel-turnstile
Package laravel-turnstile
Short Description Cloudflare Turnstile voor Laravel: serverside verificatie, validatieregel, Blade-componenten en de bijhorende JavaScript.
License MIT
Informations about the package laravel-turnstile
Laravel Turnstile
Cloudflare Turnstile voor Laravel: serverside verificatie, een validatieregel, Blade-componenten en de bijhorende JavaScript.
Het widget draait standaard onzichtbaar (appearance: interaction-only,
execution: execute). Er gebeurt pas iets wanneer een formulier verstuurd wordt,
en de bezoeker ziet alleen iets wanneer Cloudflare echt twijfelt. Komt die
uitdaging er, dan schuift ze naar voren als modaal blok in plaats van ergens in
de paginastroom op te duiken waar niemand ze ziet.
Installatie
In .env:
Voeg https://challenges.cloudflare.com toe aan script-src en frame-src van
je Content-Security-Policy.
vendor:publish --tag=turnstile-assets --force hoort in je deploy-stap: zonder
dat belandt een update van de JavaScript nooit in public/.
Serverzijde
verify() en passes() leiden het ip zelf uit de lopende request af. Geef een
tweede argument mee om dat te overschrijven, of zet turnstile.remote_ip op
'none' om helemaal geen ip mee te sturen.
De foutcodes van Cloudflare (invalid-input-secret en broertjes) zitten in
errorCodes en forLogging(), maar bewust niet in toArray() of
jsonSerialize(). Stuur ze nooit naar een browser: ze verraden hoe je
configuratie erbij ligt.
Ontbrekende sleutels
Zonder geheime sleutel slaagt de controle enkel in local en testing
(instelbaar via turnstile.bypass_environments). Overal anders faalt ze met
not-configured plus een error-regel in het logboek, zodat een vergeten
sleutel op staging of productie niet ongemerkt voorbijgaat. Staat de sleutel
wel ingesteld, dan wordt er ook lokaal echt geverifieerd.
Frontend
Zonder eigen JavaScript, via de auto-bedrading:
De componenten leveren alleen gedrag: data-attributen, aria-bedrading en de sitekey. Klassen komen van jou, in je eigen views, waar je CSS-bouwstap al kijkt.
Zonder sitekey renderen stage, container, scripts en widget niets.
Programmatisch
Foutcodes: turnstile-script, turnstile-error, turnstile-cancelled,
turnstile-expired, turnstile-superseded, turnstile-not-ready.
Zichtbaar widget
Wil je het klassieke aanvinkvakje in plaats van een controle bij het versturen,
geef de container dan data-turnstile-visible, of gebruik create({visible: true}).
Voor volledig eigen bedrading is er <x-turnstile::widget data-callback="..." />.
Styling
turnstile.css regelt alleen de mechaniek van het vlak. Kleuren en maten lopen
via custom properties:
Heeft je applicatie een eigen asset-helper (cachebusting, .min-omschakeling),
zet die dan in turnstile.assets.resolver:
De resolver krijgt $path en levert een URL die klaar is om in een attribuut te
echoen (dus reeds ge-escaped).
Native apps
Een native app kan zelf geen token maken. Publiceer daarvoor de kale brugpagina en laad ze in een onzichtbare WebView:
De pagina stuurt JSON via window.ReactNativeWebView.postMessage:
{"status":"ok","token":"..."}, {"status":"error"}, {"status":"interactive"}
(toon de WebView) en {"status":"resolved"} (verberg hem weer).
Testen
De fake vervangt de facade, het contract en de concrete klasse, dus ook de
validatieregel en code die TurnstileVerifier type-hint zien hem.
Wil je liever op HTTP-niveau blijven, dan werkt Http::fake() gewoon:
Testsleutels van Cloudflare
| sitekey | secret | gedrag |
|---|---|---|
1x00000000000000000000AA |
1x0000000000000000000000000000000AA |
slaagt altijd, onzichtbaar |
3x00000000000000000000FF |
daagt altijd uit | |
2x0000000000000000000000000000000AA |
siteverify faalt altijd |
Configuratie
De sleutels staan met commentaar in config/turnstile.php. Het vaakst gebruikt:
bypass_environments, connect_timeout / http_timeout (samen de harde
bovengrens per verificatie), fail_open (doorlaten bij een Cloudflare-storing)
en remote_ip.
Er wordt bewust niet opnieuw geprobeerd bij een netwerkfout: een
Turnstile-token is eenmalig, dus een tweede poging levert bij een half geslaagde
eerste poging gegarandeerd timeout-or-duplicate, en dat is niet van bot-gedrag
te onderscheiden.
Licentie
MIT.
All versions of laravel-turnstile with dependencies
guzzlehttp/guzzle Version ^7.9|^8.0
illuminate/contracts Version ^12.0|^13.0
illuminate/http Version ^12.0|^13.0
illuminate/log Version ^12.0|^13.0
illuminate/support Version ^12.0|^13.0
illuminate/validation Version ^12.0|^13.0
illuminate/view Version ^12.0|^13.0