A Kirby 3 plugin implementing a Cloudflare Turnstile guard for the Uniform plugin.
Add the plugin to your project:
composer require anselmh/kirby-uniform-turnstile
It is possible to install plugins manually. Download from the Github Releases page, unpack the archive and put it into site/plugins
.
Please note that this project depends on Uniform so it is required to install this package as well.
Set the configuration in your config.php
file:
return [
'anselmh.uniform-turnstile.siteKey' => 'my-site-key',
'anselmh.uniform-turnstile.secretKey' => 'my-secret-key',
];
You can use the provided helper function to embed the Turnstile into your template:
<?= turnstileField() ?>
In order for turnstile to work, you need to provide the Turnstile JavaScript file.
Use the helper function turnstileScript()
in your template or add it to the template at right before the closing </body>
tag.
Example
<form action="<?= $page->url() ?>" method="post">
<label for="name" class="required">Name</label>
<input<?php if ($form->error('name')): ?> class="erroneous"<?php endif; ?> name="name" type="text" value="<?= $form->old('name') ?>">
<!-- ... -->
<?= csrf_field() ?>
<?= turnstileField() ?>
<input type="submit" value="Submit">
</form>
<?= turnstileScript() ?>
In your controller you can use the magic method turnstileGuard()
to enable the turnstile guard:
$form = new Form(/* ... */);
if ($kirby->request()->is('POST'))
{
$form->turnstileGuard()
->emailAction(/* ... */);
}