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. 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 Cookie SameSite RPPS/ADELI RGPD-friendly
  • Remboursement 30 jours
  • 12 mois de mises à jour
  • Support 24h
www.datafirefly.com/
Age Gate DataFirefly
v1.0.3 · mis à jour 2026-05-10
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

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).

03

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.

04

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. Conservation 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

Multi-boutique et multilingue dès l'install

Toutes les configurations (mode, type de vérification, textes, couleurs, bypass) 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.

§ 05

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é.

§ 06

RGPD : cookie strictement nécessaire, IP hashée

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) pour protéger la vie privée tout en permettant la statistique. Compatible avec n'importe quelle bannière de consentement existante.

§ 07

Diagnostic intégré pour debug rapide

Une fois activé, dfagegate ajoute dans la balise head un commentaire HTML du type « dfagegate v1.0.3 enabled=1 should_display=1 ». En cas de problème, vous lisez directement le code source de la page : enabled=0 signifie toggle pas activé, should_display=0 signifie qu'un bypass est actif (IP, path, ou client connecté), absence du commentaire signifie hook pas enregistré. Plus besoin de chercher dans les logs.