anselmh / kirby-uniform-turnstile

A Kirby 3 plugin implementing a Cloudflare Turnstile guard for the Uniform plugin.
MIT License
10 stars 1 forks source link
kirby-3 kirby-cms kirby-plugin kirby-plugins kirby3 kirby3-plugin

Uniform Cloudflare Turnstile Guard

A Kirby 3 plugin implementing a Cloudflare Turnstile guard for the Uniform plugin.

Installation

Composer

Add the plugin to your project:

composer require anselmh/kirby-uniform-turnstile

Manual install

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.

Configuration

Set the configuration in your config.php file:

return [
  'anselmh.uniform-turnstile.siteKey' => 'my-site-key',
  'anselmh.uniform-turnstile.secretKey' => 'my-secret-key',
];

Usage

Template

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() ?>

Controller

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(/* ... */);
}

Credits