Addon Statamic pour intégrer Cap — un CAPTCHA proof-of-work auto-hébergé — dans les formulaires Statamic.
Basé sur oliweb/laravel-cap.
Prérequis
- PHP 8.2+
- Statamic 5.x ou 6.x
- Une instance Cap auto-hébergée
Installation
composer require oliweb/statamic-cap
Les assets (JS + CSS) sont servis automatiquement par l'addon via des routes dédiées. Aucun vendor:publish n'est nécessaire.
Configuration
Via le panneau Statamic CP
Accéder à Tools > Cap CAPTCHA dans le panneau d'administration Statamic.
| Champ | Description |
|---|---|
| Cap Endpoint URL | URL complète de votre instance Cap, incluant le site-key (ex : https://cap.example.com/votre-site-key/) |
| Secret Key | Clé secrète générée dans le tableau de bord Cap |
| Token Field Name | Nom du champ hidden injecté par le widget (défaut : cap-token) |
| Timeout (seconds) | Délai avant abandon de la requête vers /siteverify (défaut : 5) |
| Fail Open | Si activé, laisse passer la requête en cas d'erreur de communication avec Cap |
Les réglages sont sauvegardés dans storage/statamic/addons/statamic-cap.yaml.
Via variables d'environnement
Les variables d'environnement servent de valeurs par défaut et sont surchargées par les réglages CP.
CAP_ENDPOINT=https://cap.example.com/votre-site-key/CAP_SECRET=votre-cle-secreteCAP_TOKEN_FIELD=cap-tokenCAP_TIMEOUT=5CAP_FAIL_OPEN=false
Utilisation
Tags Antlers
Ajouter le widget Cap dans un formulaire Statamic :
{{ form:create handle="contact" }} {{ cap }} <button type="submit">Envoyer</button> {{ /form:create }}
Charger les assets dans le layout :
<head> {{ cap:styles }}</head><body> ... {{ cap:scripts }}</body>
Avec nonce CSP
{{ cap:scripts nonce="{ $cspNonce }" }}{{ cap nonce="{ $cspNonce }" }}
Validation automatique
La vérification du token est automatique : l'addon écoute l'événement FormSubmitted de Statamic et rejette la soumission si le token est invalide ou absent. Aucune configuration supplémentaire n'est nécessaire.
En cas d'échec, une erreur de validation est retournée avec le message statamic-cap::messages.validation_failed.
CSP strict et WASM local
Par défaut, le widget charge son module WASM depuis jsDelivr (cdn.jsdelivr.net). Si vous avez une CSP stricte avec connect-src 'self', téléchargez le WASM localement :
php artisan cap:publish-wasm
Le fichier est sauvegardé dans storage/app/statamic-cap/cap_wasm_bg.wasm et servi automatiquement via la route /vendor/statamic-cap/cap_wasm_bg.wasm. Le tag {{ cap:scripts }} injecte window.CAP_CUSTOM_WASM_URL pour que le widget l'utilise sans configuration supplémentaire.
Traductions
Les traductions sont disponibles en anglais et en français. Les chaînes couvrent la validation, les messages d'erreur et les libellés de la page de réglages CP.
Pour les personnaliser, copier et modifier resources/lang/{locale}/messages.php dans votre projet :
lang/vendor/statamic-cap/{locale}/messages.php
Licence
MIT