Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Filament Turnstile Laravel Package

muazzambuilds/filament-turnstile

Easily add Cloudflare Turnstile CAPTCHA protection to Filament forms with this lightweight package. It blocks spam and bot submissions using a privacy-friendly challenge, offers simple configuration, and keeps the experience smooth for real users. Quick to install and configure in minutes.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit Filament Turnstile is a panel plugin for Filament v5 that adds Cloudflare Turnstile bot protection to Filament panel surfaces — most plausibly the authentication screens (login, registration, password reset) and optionally arbitrary forms. Architecturally this is a natural fit: Filament plugins register through the existing Panel::plugin() contract, so adoption is additive and does not require forking or patching Filament internals. Turnstile itself is a drop-in CAPTCHA replacement that renders client-side and verifies server-side against Cloudflare's siteverify endpoint, which is a standard pattern already used by the reCAPTCHA/hCaptcha plugin family. The important architectural nuance is that this introduces a hard runtime dependency on a third-party network call into the authentication path — the single most availability-sensitive part of the admin panel.

Integration feasibility Installation is a one-line Composer require, which suggests a conventional Laravel package layout with a service provider and auto-discovery. Feasibility is high but under-specified: the release notes cover installation and nothing else. There is no documented configuration surface (site key / secret key binding, env variable names, publishable config), no statement of which Filament pages are instrumented, no guidance on enabling/disabling per panel or per form, and no mention of local development keys. Cloudflare publishes well-known always-pass/always-fail test keys, but we cannot assume the package honours them without checking source. Realistically this is a half-day spike to read the provider and confirm behaviour, not a documented configuration task.

Technical risk The dominant risk is vendor and maturity risk. This is a 1.0.0 from an individual maintainer (muazzambuilds) with no linked repository, no stated license, no test suite evidence, no security policy, and no support channel in the notes. The package executes inside the admin panel — a privileged, high-value surface — so supply-chain diligence is warranted before it touches production auth. Secondary risks: Filament v5 is itself recent, so the compatibility matrix (Filament 5.x, Livewire 3, Laravel 11/12, PHP 8.2+) is narrow and untested in our context; Turnstile requires CSP allowances for challenges.cloudflare.com in both script-src and frame-src, which will break silently on a hardened CSP; and Livewire's SPA-style navigation can cause widget re-render or duplicate-token issues that a v1.0.0 may not have handled.

Key questions

  • Which Filament surfaces does the plugin instrument by default, and can it be scoped to specific panels/pages?
  • What are the config keys and env variable names, and is the config publishable?
  • What is the failure policy when siteverify is unreachable or returns 5xx — fail-open (auth bypass) or fail-closed (lockout)? Is it configurable?
  • Is there a documented bypass for local/CI environments, and does it support Cloudflare's test keys?
  • What is the license, repository location, and disclosure process for security issues?
  • Does it handle Livewire re-renders and token expiry (300s) correctly?
  • Is there any automated test coverage, and against which Filament/Laravel matrix?
  • Does it implement server-side verification independently, or delegate to an existing, better-established captcha abstraction?

Integration Approach

Stack fit Assumes Laravel 11/12, PHP 8.2+, Filament 5.x, Livewire 3. Our panels are on Filament, so the fit is direct with no adapter layer. The plugin adds an outbound HTTPS dependency to challenges.cloudflare.com from the application server, which must be permitted through egress rules in restricted environments — this is a common oversight in locked-down VPCs and should be validated early.

Migration path Additive, greenfield. No schema changes, no data migration, no backfill. The only "migration" concern is configuration: secrets must be introduced via the existing secret-management path (TURNSTILE_SECRET_KEY in the environment store, never committed), and CSP headers must be amended before rollout or the widget will not render. Rollback is a Composer removal plus a config revert, which makes this cheap to trial and cheap to abandon.

Compatibility Two compatibility axes to verify rather than assume: the Filament major version (v5 only per the notes — no stated support for v4, so panels mid-upgrade cannot adopt this yet) and our CSP/security-header posture. Also verify behaviour behind a reverse proxy or WAF, since client IP forwarding affects Turnstile scoring and verification. Third-party captcha plugins in this ecosystem have historically lagged Filament majors; a 1.0.0 tied to v5 carries no track record of keeping pace through v6.

Sequencing

  1. Spike in a throwaway branch: install, publish config, confirm which pages are protected and what the failure policy is.
  2. Security review of the package source (small, but it runs in the auth path) and confirmation of license and repository provenance.
  3. Amend CSP and egress allowlists in a staging environment; validate widget render and server-side verification end to end.
  4. Gate the plugin behind a config flag so it can be disabled without a deploy in the event of a Cloudflare incident.
  5. Roll out to a low-traffic panel first, then remaining panels.
  6. Document the local-dev bypass for the team before enabling in shared environments.

Operational Impact

Maintenance Ongoing cost is low in code terms but non-zero in attention: we inherit the maintainer's release cadence for Filament major upgrades. Given a single-maintainer 1.0.0, assume we may need to fork or vendor the package if it goes stale — budget for that as a contingency rather than a surprise. Pin to an exact version and review diffs on upgrade; do not float the constraint, because a patch release here executes in the auth path.

Support No stated support channel, SLA, or security disclosure process. Internal ownership must be assigned explicitly — this is the kind of dependency that quietly becomes nobody's. Add it to the dependency register with a named owner and a review date, and treat it as a security-relevant third party rather than a convenience library.

Scaling Negligible CPU/memory footprint; the cost is per-authentication-attempt network latency to Cloudflare (typically tens of milliseconds) plus potential rate limiting on siteverify under credential-stuffing bursts — precisely when login volume spikes. Note the irony: the protection is most load-bearing during an attack, which is also when the dependency is most stressed. Confirm timeout and retry behaviour on the verification call; a generous timeout in the login path is a self-inflicted DoS vector.

Failure modes

  • Cloudflare outage / egress blocked — if fail-closed, all admin logins are denied. This is the highest-severity scenario and the reason a config kill-switch is mandatory.
  • Fail-open default — if the package silently passes on verification error, the control is decorative. Must be determined, not assumed.
  • CSP misconfiguration — widget fails to render; users see a form that cannot submit. Detectable only by testing in the target environment.
  • Token expiry / duplicate widget — stale or doubled tokens after Livewire navigation produce intermittent, hard-to-reproduce login failures.
  • Missing or rotated keys — silent pass or hard failure at boot depending on implementation; rotation needs a documented runbook.
  • Upstream abandonment — no v6-compatible release when we upgrade Filament, blocking the panel upgrade.

Ramp-up Low for a Laravel developer — the install is one command and the domain concept (CAPTCHA) is familiar. The real ramp-up cost is undocumented behaviour: expect to read the service provider to learn the config keys, protected routes, and failure semantics. Call it half a day for a confident engineer to reach production-ready understanding, plus the security review. Provide the team a short internal note covering the env vars, the kill-switch, the local bypass, and the CSP requirements — none of which ship with v1.0.0.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
se7enxweb/flysystem
lampwick/laravel
jeslage/statamic-emojis
micahdshackelford/rmap-laravel
draftsmaninc/draftsman
square-bit/laravel-volition
himito/laravel-mailman
htinlynn/genius-helper
maco-studios/hephaestus
elmogy/larafast
xeviant/laravel-paystack
gorilladash/laravel-website-sdk
martialbe/flysystem-oss
chondal/3312client
jeroen-g/flickr
opscale-co/nova-genbi
itsjustvita/laravel-retention
tequilarapido/trackit
gregsphotography/site-builder-filament
cabaoctavio/laravel-query-log