PrestaShop Modules PrestaShop

Vérification d’Âge PrestaShop – Modal Bloquante pour CBD, Alcool, Vape & Pro de Santé

La modale d'âge bloquante, propre, conforme — et qui marche partout.

Vendre du CBD, de l'alcool, du e-liquide ou des armes en ligne sans bloquer l'accès aux mineurs vous expose à des sanctions de la DGCCRF, des AFNOR ou de la DDPP. Vendre du matériel médical réservé aux professionnels sans matérialiser de déclaration vous expose à l'article L5122-9 du Code de la santé publique. dfagegate place une modale bloquante dès la première visite, pose un cookie SameSite=Lax (Secure si HTTPS), et matérialise la décision du visiteur — texte oui/non, date de naissance avec calcul d'âge serveur, ou déclaration profession + numéro RPPS/ADELI pour le mode médical. Depuis la 1.1.0, ciblez toute la boutique, des catégories (sous-catégories comprises) ou des produits précis. Conçu pour PrestaShop 8 et 9, multi-boutique, multilingue (FR/EN/ES/DE par défaut), avec logs RGPD-friendly (IP hashée SHA-256).

PrestaShop 8 + 9 Multi-boutique FR/EN/ES/DE Ciblage catégories & produits Cookie SameSite RPPS/ADELI RGPD-friendly
  • Remboursement 30 jours
  • 12 mois de mises à jour
  • Support 24h
www.datafirefly.com/
Contrôle d'âge à l'entrée d'une boutique PrestaShop
v1.1.0 · mis à jour 2026-09-28
Ce que ça fait

La version courte.

01

Modale bloquante côté serveur + JS

Rendue par PrestaShop via le hook displayBeforeBodyClosingTag, avec fallback JS qui injecte la modale dans le body si votre thème personnalisé n'appelle pas le hook. Marche sur Classic et sur 99% des thèmes custom sans toucher au layout.

02

Ciblage par catégories ou produits

Boutique mixte ? Limitez la modale au rayon réglementé : arbre de catégories à cocher avec filtre (sous-catégories couvertes automatiquement) ou recherche de produits par nom et référence. Le reste de la boutique reste accessible sans friction.

03

3 types de vérification au choix

Boutons Oui / Non (CBD, alcool, vape, briquets), date de naissance complète avec calcul d'âge côté serveur (armurerie, marchés stricts à 21 ans), ou déclaration de profession médicale avec RPPS/ADELI (matériel médical réservé aux pro).

04

Mode médical conforme L5122-9

Pour les revendeurs de dispositifs médicaux dont la publicité est réservée aux professionnels de santé. Liste de professions personnalisable, validation regex du numéro RPPS/ADELI (9 à 11 chiffres), aucun stockage du numéro — uniquement validation.

05

Logs RGPD-friendly (IP hashée SHA-256)

Optionnel : enregistre les refus dans une table dédiée avec IP hashée (pas en clair), date, raison. Statistiques intégrées au back-office, rétention automatique configurable. Cookie strictement nécessaire au sens de l'article 82 LIL — exempté de consentement préalable.

La version longue

Tout ce que vous voudriez savoir avant d'installer.

Un regard détaillé sur le fonctionnement de Vérification d'Âge PrestaShop – Modal Bloquante pour CBD, Alcool, Vape & Pro de Santé, pourquoi nous l'avons conçu ainsi, et la réflexion derrière les fonctionnalités ci-dessus.

§ 01

Pourquoi un module dédié plutôt qu'un popup générique

Les popups marketing classiques se ferment d'un clic, ne valident rien, ne posent pas de cookie de conformité, et n'ont aucune trace en base. Pour un site CBD ou alcool contrôlé par la DGCCRF, c'est une non-conformité directe. Pour un revendeur de matériel médical contrôlé sur l'article L5122-9, c'est un risque sur l'autorisation de mise sur le marché. dfagegate fait l'inverse : modale réellement bloquante (lock scroll, trap focus), validation côté serveur, cookie SameSite/Secure, logs avec IP hashée. C'est un outil de conformité, pas un widget marketing.

§ 02

Le mode standard : CBD, alcool, vape, armurerie

Pour la majorité des marchés réglementés à 18 ans (ou 21 dans certains pays). Trois types de vérification au choix selon votre profil de risque : boutons Oui/Non (rapide, faible friction, suffisant pour CBD ou alcool grand public), date de naissance complète avec calcul d'âge côté serveur via DateTimeImmutable (impossible à bypasser via DevTools, recommandé pour l'armurerie ou les liquides nicotinés), redirection configurable en cas de refus vers une page tierce.

§ 03

Le mode médical : conformité L5122-9 du Code de la santé publique

L'article L5122-9 interdit la publicité auprès du grand public pour certains dispositifs médicaux et les réserve aux professionnels de santé habilités. dfagegate matérialise la déclaration : liste de professions personnalisable (médecin, pharmacien, kiné, dentiste, vétérinaire…), case à cocher de déclaration sur l'honneur, validation optionnelle du numéro RPPS ou ADELI via regex (9 à 11 chiffres). Le numéro n'est jamais stocké en base — il sert uniquement à la validation. C'est l'esprit de la conformité minimale viable : une trace de la déclaration, sans collecte excessive.

§ 04

Ciblez le rayon réglementé, pas toute la boutique

Depuis la version 1.1.0, le périmètre d'affichage se règle en trois modes. Toute la boutique : comportement historique, la modale s'affiche partout. Catégories ciblées : cochez vos catégories dans un arbre avec filtre de recherche, la modale s'affiche sur ces pages de catégories et sur les fiches des produits qui leur appartiennent, sous-catégories comprises si l'option est active. Produits ciblés : recherchez vos produits par nom ou référence, la modale ne s'affiche que sur leurs fiches. Le cas d'usage typique : une épicerie fine qui vend aussi des spiritueux, une parapharmacie avec un rayon matériel pro. Le rayon réglementé est protégé, le reste de la boutique reste accessible sans friction. La décision se prend côté serveur, pas en JavaScript.

§ 05

Multi-boutique et multilingue dès l'install

Toutes les configurations (mode, type de vérification, textes, couleurs, bypass, périmètre) sont stockées par contexte boutique via id_shop_group / id_shop. Vous pouvez avoir une boutique CBD à 18 ans en FR et une boutique vape à 21 ans en US dans le même PrestaShop, chacune avec ses textes et son cookie. Les hooks sont enregistrés sur toutes les boutiques au moment de l'installation via Shop::getCompleteListOfShopsID(), évitant le piège classique du module qui ne tourne que sur la boutique courante.

§ 06

Robustesse côté thème : fallback JS d'injection

Le hook displayBeforeBodyClosingTag est censé être universel sur PrestaShop 1.7.5+, mais nombre de thèmes personnalisés l'omettent dans leur layout. dfagegate gère ce cas : la modale HTML pré-rendue est passée en JS via Media::addJsDef. Au DOMContentLoaded, le script vérifie si l'élément dfagegate-modal existe dans le DOM. Sinon, il l'injecte lui-même via insertAdjacentHTML. Marche sur n'importe quel thème, sans toucher au layout. Un message console.info confirme si le fallback s'est activé.

§ 07

RGPD : cookie strictement nécessaire, IP hashée, rétention automatique

Le cookie dfagegate_ok rentre dans la catégorie « strictement nécessaire au respect d'une obligation légale d'accès » au sens de l'article 82 de la loi Informatique et Libertés — il est exempté de consentement préalable, contrairement aux cookies marketing. Sa valeur est binaire (1 = confirmé), durée configurable, SameSite=Lax, Secure en HTTPS. Les logs de refus optionnels stockent une IP hashée SHA-256 (jamais en clair). L'onglet Logs affiche les statistiques (total 30 jours, répartition par raison, derniers refus) et la rétention est automatique : les entrées plus anciennes que la durée configurée (365 jours par défaut) sont purgées. Compatible avec n'importe quelle bannière de consentement existante.

§ 08

Diagnostic intégré pour debug rapide

Une fois activé, dfagegate ajoute dans la balise head un commentaire HTML du type « dfagegate v1.1.0 enabled=1 scope=all should_display=1 ». En cas de problème, vous lisez directement le code source de la page : enabled=0 signifie toggle pas activé, scope indique le périmètre actif, should_display=0 signifie qu'un bypass est actif ou que la page est hors périmètre. Le bouton Tester la modale ouvre la boutique en mode aperçu (?dfagegate_preview=1) : la modale s'affiche même si le cookie est posé, sans en déposer. Plus besoin de navigation privée ni de chercher dans les logs.