Metadata-Version: 2.4
Name: djangocms_form_builder_honeypot
Version: 0.0.1
Summary: Add-on djangocms-form-builder to add an invisible honeypot anti-spam field
License: GNU GPLv3
Author: Kapt dev team
Author-email: dev@kapt.mobi
Requires-Python: >=3.10,<4
Classifier: License :: Other/Proprietary License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: Django (>=3.2)
Requires-Dist: djangocms-form-builder
Project-URL: Repository, https://gitlab.com/kapt/open-source/djangocms_form_builder_honeypot
Description-Content-Type: text/markdown

# djangocms_form_builder_honeypot

Greffon pour [djangocms-form-builder](https://github.com/fsbraun/djangocms-form-builder) qui ajoute automatiquement un champ leurre invisible aux formulaires CMS pour filtrer les soumissions de bots.

## Fonctionnalités

- **Injection automatique** : un champ texte masqué est ajouté à chaque formulaire CMS via un processeur CMS (sans surcharger les templates Bootstrap du form-builder)
- **Rendu identique** aux autres champs (`form-floating`, `form-control`, etc.)
- **Rejet silencieux** : par défaut, les bots voient un succès mais aucune action (email, Brevo, sauvegarde BDD) n'est exécutée
- **Configuration par formulaire** dans l'admin CMS (section « Anti-spam » du plugin Form)
- **Valeurs par défaut** configurables globalement via les settings Django

## Requirements

- Python 3.10+
- Django 3.2+
- djangocms-form-builder ^0.5
- django-cms

## Installation

```bash
pip install djangocms_form_builder_honeypot
```

## Configuration

1. Ajoutez `djangocms_form_builder_honeypot` à `INSTALLED_APPS` (après `djangocms_form_builder`) :

```python
INSTALLED_APPS = [
    # ...
    "djangocms_form_builder",
    "djangocms_form_builder_honeypot",
    # ...
]
```

Le module enregistre automatiquement un `CMS_PLUGIN_PROCESSOR` pour injecter le champ dans le HTML rendu du plugin Form.

2. Valeurs par défaut dans `settings.py` (utilisées à la création d'un nouveau formulaire CMS) :

```python
DJANGOCMS_FORM_BUILDER_HONEYPOT_ENABLED = True
DJANGOCMS_FORM_BUILDER_HONEYPOT_FIELD_NAME = "site_web"
DJANGOCMS_FORM_BUILDER_HONEYPOT_LABEL = "Site web"
DJANGOCMS_FORM_BUILDER_HONEYPOT_SILENT_REJECT = True
DJANGOCMS_FORM_BUILDER_HONEYPOT_SUCCESS_MESSAGE = "<p>Merci pour votre message.</p>"
```

3. Dans l'admin CMS, ouvrez un plugin **Form** : la section **Anti-spam** permet de configurer pour chaque formulaire :
   - Activer / désactiver le champ leurre
   - Nom et libellé du champ
   - Rejet silencieux

## Fonctionnement

Le champ est rendu comme un champ texte classique du form-builder, puis masqué hors écran. Les utilisateurs humains ne le voient pas ; les bots le remplissent souvent. Si le champ contient une valeur à la soumission, la requête est ignorée côté serveur.

Le module complète les protections existantes (Altcha, login requis, etc.) sans interaction utilisateur supplémentaire.

