adipradana / filament-turnstile
Cloudflare Turnstile integration for Laravel Filament login and forms.
Package info
github.com/yuda-adipradana/filament-turnstile
pkg:composer/adipradana/filament-turnstile
v1.0.2
2026-04-22 07:50 UTC
Requires
- php: ^8.1 || ^8.2 || ^8.3
- filament/filament: ^3.0 || ^4.0 || ^5.0
- illuminate/support: ^10.0 || ^11.0 || ^12.0 || ^13.0
README
Cloudflare Turnstile integration for Laravel Filament (Login & Forms).
Lightweight, clean, and production-ready captcha alternative with better UX.
โจ Features
- ๐ Cloudflare Turnstile integration (no annoying captcha)
- โก Support Filament v3, v4, v5
- ๐งฉ Works on Login & Custom Forms
- ๐งผ Clean validation pipeline
- ๐ Easy setup (1โ2 lines)
๐ฆ Requirements
- PHP
^8.1 || ^8.2 || ^8.3 - Laravel
^10 || ^11 || ^12 || ^13 - Filament
^3 || ^4 || ^5
๐ Installation
composer require adipradana/filament-turnstile
โ๏ธ Configuration
1. Environment Setup
Setup .env:
# .env.development TURNSTILE_SITEKEY=1x00000000000000000000AA TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA # .env.test TURNSTILE_SITEKEY=2x00000000000000000000AB TURNSTILE_SECRET_KEY=2x0000000000000000000000000000000AA # .env.production TURNSTILE_SITEKEY=your-real-sitekey TURNSTILE_SECRET_KEY=your-real-secret-key
Alternative:
TURNSTILE_SITEKEY=your_site_key
2. Publish Config (Optional)
php artisan vendor:publish --tag=filament-turnstile-config
File:
config/filament-turnstile.php
๐ Usage
๐น Filament Login
Override login Filament:
use Adipradana\FilamentTurnstile\Pages\Auth\TurnstileLogin; ->login(TurnstileLogin::class)
๐ Example: // app/Providers/Filament/AdminPanelProvider.php
use Adipradana\FilamentTurnstile\Pages\Auth\TurnstileLogin; public function panel(Panel $panel): Panel { return $panel //... ->login(TurnstileLogin::class); }
๐น Filament Forms
use Adipradana\FilamentTurnstile\Turnstile; Turnstile::make('captcha')
๐ Example:
use Filament\Forms\Components\TextInput; use Adipradana\FilamentTurnstile\Turnstile; TextInput::make('name'), Turnstile::make('captcha'),
๐น Validation (Advanced)
Before Create
protected function mutateFormDataBeforeCreate(array $data): array { return \Adipradana\FilamentTurnstile\Turnstile::validate($data); }
Before Save
protected function mutateFormDataBeforeSave(array $data): array { return \Adipradana\FilamentTurnstile\Turnstile::validate($data); }
๐จ Publish Assets
Publish All
php artisan vendor:publish --provider="Adipradana\FilamentTurnstile\FilamentTurnstileServiceProvider"
Publish Views (Optional)
php artisan vendor:publish --tag=filament-turnstile-views
Output:
resources/views/vendor/filament-turnstile/turnstile.blade.php
๐งช Testing
Cloudflare Reference:
https://developers.cloudflare.com/turnstile/troubleshooting/testing/
๐งน Clear Cache
php artisan optimize:clear
โ Uninstall
1. Remove package
composer remove adipradana/filament-turnstile
2. Remove published files
rm config/filament-turnstile.php rm -rf resources/views/vendor/filament-turnstile
3. Remove ENV
TURNSTILE_SITE_KEY= TURNSTILE_SECRET_KEY=
โ ๏ธ Common Issues
โ Turnstile tidak muncul
- Check
TURNSTILE_SITE_KEY - run
optimize:clear
โ Validasi selalu gagal
- Check
TURNSTILE_SECRET_KEY - Make request Cloudflare valid
โ View not found
- Make sure package is updated
- run:
composer update adipradana/filament-turnstile php artisan optimize:clear
๐ License
MIT License