adipradana/filament-turnstile

Cloudflare Turnstile integration for Laravel Filament login and forms.

Maintainers

Package info

github.com/yuda-adipradana/filament-turnstile

pkg:composer/adipradana/filament-turnstile

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.2 2026-04-22 07:50 UTC

This package is auto-updated.

Last update: 2026-04-22 08:20:21 UTC


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