pixelopen / cloudflare-turnstile-bundle
A simple package to help integrate Cloudflare Turnstile on Symfony.
Installs: 49 809
Dependents: 1
Suggesters: 0
Security: 0
Stars: 23
Watchers: 1
Forks: 6
Open Issues: 1
Requires
- php: >=7.4
- symfony/form: ^5.0|^6.0|^7.0
- symfony/framework-bundle: ^5.0|^6.0|^7.0
- symfony/http-client: ^5.0|^6.0|^7.0
- symfony/twig-bundle: ^5.0|^6.0|^7.0
- symfony/validator: ^5.0|^6.0|^7.0
- symfony/yaml: ^5.0|^6.0|^7.0
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpstan/phpstan-symfony: ^1.2
- phpunit/phpunit: ^9.6
- rector/rector: ^0.14.5
- symplify/easy-coding-standard: ^11.1
README
This packages provides helper for setting up and validating Cloudflare Turnstile CAPTCHA responses.
Installation
You can install the package via Composer:
composer require pixelopen/cloudflare-turnstile-bundle
Add bundle into config/bundles.php file :
PixelOpen\CloudflareTurnstileBundle\PixelOpenCloudflareTurnstileBundle::class => ['all' => true]
Add a config file into config/packages/pixel_open_cloudflare_turnstile.yaml :
pixel_open_cloudflare_turnstile: key: '%env(TURNSTILE_KEY)%' secret: '%env(TURNSTILE_SECRET)%' enable : true
Visit Cloudflare to create your site key and secret key and add them to your .env
file.
TURNSTILE_KEY="1x00000000000000000000AA"
TURNSTILE_SECRET="2x0000000000000000000000000000000AA"
Use with your Symfony Form
Create a form type and insert an Turnstile Type to add a Cloudflare Turnstile :
<?php namespace App\Form; use App\Entity\Contact; use PixelOpen\CloudflareTurnstileBundle\Type\TurnstileType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class ContactType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('name', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'name']]) ->add('message', TextareaType::class, ['label' => false, 'attr' => ['placeholder' => 'message']]) ->add('security', TurnstileType::class, ['attr' => ['data-action' => 'contact', 'data-theme' => 'dark'], 'label' => false]) ->add('submit', SubmitType::class) ; } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => Contact::class, ]); } }
Testing
Use the following sitekeys and secret keys for testing purposes:
Sitekey
Secret key
Todo
- Add phpunit to test field
and validator
License
The MIT License (MIT). Please see License File for more information.