Une boîte à outils complète de conformité RGPD pour votre site LaraClassifier / JobClass. Affichez une bannière de consentement aux cookies personnalisable, enregistrez les décisions de consentement des visiteurs pour les audits de conformité, et gérez les catégories de cookies depuis le panneau d'administration.
Bannière de consentement aux cookies
Une bannière soignée et responsive avec les options Tout accepter, Tout refuser et Personnaliser. Sept variantes de position, dont un mode modal.
Catégories granulaires
Quatre catégories de cookies (Essentiels, Analytique, Marketing, Préférences) avec des interrupteurs par catégorie pour les visiteurs.
Journalisation des consentements
Piste d'audit complète de chaque décision de consentement : adresse IP, user agent, action effectuée et catégories sélectionnées. Conforme à l'article 7 du RGPD.
Injection automatique
La bannière est injectée automatiquement dans toutes les pages front-end via un middleware. Aucune modification de template n'est nécessaire. Le panneau d'administration et les requêtes AJAX sont ignorés.
Cas d'usage
Conformité d'un site web UE/EEE
Votre site s'adresse à des visiteurs de l'Union européenne et doit se conformer au RGPD et à la directive ePrivacy.
- Activez la bannière de consentement aux cookies pour informer les visiteurs de l'utilisation des cookies.
- Activez la journalisation des consentements pour conserver un registre auditable de toutes les décisions de consentement.
- Liez votre page de politique de confidentialité afin que les visiteurs puissent consulter vos pratiques en matière de données.
- Configurez les interrupteurs de catégories afin que les visiteurs puissent accepter ou refuser les cookies analytiques et marketing.
Site à forte composante analytique
Vous utilisez Google Analytics, Hotjar ou des outils similaires et avez besoin du consentement de l'utilisateur avant de charger les scripts de suivi.
- Activez l'interrupteur de la catégorie Analytique.
- Lisez la valeur du cookie de consentement (
gdpr_consent) dans votre JavaScript avant de charger les scripts analytiques. - Ne chargez l'analytique que lorsque
categories.analytics === true.
Marketing & reciblage publicitaire
Vous utilisez Facebook Pixel, Google Ads ou des outils d'e-mail marketing qui déposent des cookies.
- Activez l'interrupteur de la catégorie Marketing.
- Conditionnez tous les scripts marketing/publicitaires au drapeau de consentement
marketing. - Les visiteurs peuvent retirer leur consentement à tout moment via le point de terminaison de retrait.
Prérequis
- LaraClassifier / JobClass v19.0.0 ou ultérieur
- PHP 8.3+
- MySQL 8.0+
Installation
Étape 1 : Téléverser l'add-on
Dans le panneau d'administration, allez dans Admin → Extensions → Add-ons et cliquez sur le bouton Téléverser un add-on. Sélectionnez le fichier ZIP de l'add-on : le système l'extrait automatiquement et l'add-on apparaît dans la liste des add-ons installés.
Étape 2 : Activer l'add-on
Trouvez GDPR & Cookie Consent dans la liste et cliquez sur Activer. Ses migrations, seeders (le cas échéant) et permissions sont mis en place automatiquement.
Étape 3 : Configurer
Rendez-vous dans Admin → RGPD → Paramètres pour configurer la position de la bannière, la durée de vie du cookie, la journalisation des consentements et les catégories de cookies. Voir Configuration.
Code d'achat (clé de licence)
GDPR & Cookie Consent est vendu comme un produit séparé ; il possède donc son propre code d'achat (clé de licence) — distinct du code d'achat de l'application principale et de celui de tout autre add-on. Il vous est demandé lorsque vous activez GDPR & Cookie Consent dans Panneau d'administration → Add-ons.
Nos produits sont vendus sur trois plateformes. La façon dont vous recevez un code d'achat dépend de l'endroit où vous avez acheté le produit.
| Plateforme / Fournisseur | Comment vous obtenez le code d'achat | Où le retrouver |
|---|---|---|
| Boutique bedigit.com Achat sur le site (Boutique) |
Généré automatiquement lorsque la commande est payée, puis envoyé par e-mail — soit dans un e-mail de licence dédié, soit dans l'e-mail de confirmation de commande. | Mon compte → Mes licences sur bedigit.com |
| Gumroad | Créé dès que Gumroad nous notifie la vente, puis envoyé dans un e-mail séparé, en plus du reçu Gumroad. | L'e-mail de licence, votre Bibliothèque Gumroad, et Mon compte → Mes licences sur bedigit.com |
| Envato Market CodeCanyon |
Délivré par Envato, pas par nous, et jamais envoyé par e-mail : vous le téléchargez vous-même depuis votre compte Envato. | Compte Envato → Downloads → License certificate & purchase code |
1. Boutique bedigit.com (achat sur le site)
- Dès que le statut de paiement de la commande passe à Payée, une clé de licence est générée automatiquement pour chaque article sous licence de la commande (une clé par unité achetée — acheter 3 unités donne 3 clés distinctes).
- Elle est envoyée par e-mail à l'adresse utilisée pour la commande, soit dans un e-mail de licence dédié, soit dans l'e-mail de confirmation de commande. Vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- La clé reste disponible dans votre compte sous Mon compte → Mes licences. Les clés sont masquées dans la liste ; ouvrez la page de détail de la licence pour afficher et copier la clé complète, voir les domaines sur lesquels elle est activée, et désactiver un domaine pour libérer un emplacement d'activation.
- La facture correspondante se trouve sous Mon compte → Mes commandes.
2. Gumroad
- Un achat sur Gumroad génère deux e-mails distincts : le reçu Gumroad (envoyé par Gumroad, donnant accès aux fichiers) et un e-mail de clé de licence (envoyé par bedigit.com) qui contient votre code d'achat.
- L'e-mail de clé de licence est généré dès que Gumroad nous notifie la vente ; il arrive donc normalement quelques secondes après le paiement. Ici aussi, vérifiez votre boîte de réception et votre dossier spam / courrier indésirable.
- Lorsque le produit Gumroad utilise la fonctionnalité de clé de licence propre à Gumroad, la même clé apparaît également dans votre reçu Gumroad et sous Bibliothèque → votre achat sur gumroad.com.
- Utilisez la même adresse e-mail sur bedigit.com que sur Gumroad : vos clés sont alors liées automatiquement à votre compte et listées sous Mon compte → Mes licences, même si vous vous inscrivez après l'achat. Vous pouvez aussi ajouter une clé Gumroad manuellement depuis Mon compte → Mes licences Gumroad.
3. Envato Market (CodeCanyon)
- Les codes d'achat Envato sont délivrés et fournis par Envato Market, jamais envoyés par e-mail par nos soins — il n'y a donc rien à chercher dans votre dossier spam : vous récupérez le code depuis votre compte Envato.
- Connectez-vous à votre compte Envato / CodeCanyon, ouvrez la page Downloads, trouvez l'article, et choisissez License certificate & purchase code dans le menu déroulant Download. Le code est inscrit dans ce certificat.
- Un code d'achat Envato ressemble à
12345678-90ab-cdef-1234-567890abcdef(8-4-4-4-12 caractères). Il ne change jamais, et le renouvellement du support de l'article n'en délivre pas de nouveau. - Article officiel Envato : Where Is My Purchase Code?
Configuration
Tous les paramètres sont gérés dans Admin → RGPD → Paramètres
(stockés dans la table settings, groupe gdpr).
Les valeurs par défaut proviennent de config/gdpr.php.
| Paramètre | Description | Par défaut |
|---|---|---|
gdpr_enabled |
Activer ou désactiver globalement la bannière de consentement aux cookies. | true |
gdpr_cookie_lifetime |
Nombre de jours pendant lesquels le cookie de préférence de consentement est mémorisé (1–3650). | 365 |
gdpr_log_consents |
Enregistrer la décision de consentement de chaque visiteur dans la base de données à des fins d'audit de conformité. | true |
gdpr_banner_position |
Emplacement de la bannière sur la page (7 positions disponibles). | bottom-center |
gdpr_privacy_policy_url |
URL de votre page de politique de confidentialité, affichée sous forme de lien dans la bannière. | (vide) |
gdpr_category_analytics |
Afficher l'interrupteur de la catégorie de cookies Analytique dans le panneau des préférences. | false |
gdpr_category_marketing |
Afficher l'interrupteur de la catégorie de cookies Marketing dans le panneau des préférences. | false |
gdpr_category_preferences |
Afficher l'interrupteur de la catégorie de cookies Préférences dans le panneau des préférences. | false |
gdpr_log_retention_days |
Nombre de jours avant que les journaux de consentement et les fichiers d'archive soient définitivement supprimés (1–7300). | 730 (2 ans) |
gdpr_archive_enabled |
Lorsque cette option est activée, les journaux des mois précédents sont compressés en gzip et déplacés vers le stockage privé ; seul le mois en cours reste dans la base de données. | false |
gdpr_dedup_window_minutes |
Ne pas écrire de nouveau journal de consentement si un journal identique (même utilisateur/IP, action, catégories) a été enregistré dans cette fenêtre. Mettez 0 pour désactiver. |
5 |
gdpr_stats_cache_ttl |
Durée (en secondes) pendant laquelle les statistiques du tableau de bord mises en cache restent valides. Mettez 0 pour désactiver complètement le cache. |
900 (15 minutes) |
Valeurs par défaut du fichier de configuration
Le fichier config/gdpr.php fournit les valeurs par défaut utilisées lorsqu'aucun paramètre n'existe en base de données.
Il expose également archive_disk (par défaut local) et archive_path (par défaut gdpr)
pour contrôler l'emplacement de stockage des fichiers d'archive mensuels.
Admin : Paramètres
La page des paramètres (RGPD → Paramètres) est organisée en quatre zones principales :
Paramètres généraux
La colonne de gauche (largeur 7/12) contient les options de configuration principales :
- Activer la bannière de cookies : interrupteur pour activer/désactiver la bannière globalement. Lorsqu'elle est désactivée, aucune bannière n'est affichée et aucune injection par le middleware n'a lieu.
- Durée de vie du cookie (jours) : champ numérique (1–3650 jours) contrôlant la durée de persistance du cookie de consentement dans le navigateur du visiteur.
- Position de la bannière : sélecteur visuel de position avec 7 positions affichées sur une maquette de navigateur. Cliquez sur une position pour la sélectionner ; le libellé se met à jour en temps réel.
- Journaliser les actions de consentement : interrupteur pour activer/désactiver la journalisation des consentements dans la base de données. Lorsqu'il est activé, chaque action Accepter/Refuser/Personnaliser/Retirer est enregistrée.
- URL de la politique de confidentialité : champ texte pour l'URL de votre page de politique de confidentialité. Si elle est renseignée, un lien “Politique de confidentialité” apparaît dans la bannière.
Sélecteur de position de la bannière
Le sélecteur de position est un élément visuel interactif représentant une fenêtre de navigateur miniature. Sept points cliquables représentent les positions disponibles :
| Position | Disposition | Description |
|---|---|---|
top-left |
Carte compacte | Carte flottante dans le coin supérieur gauche (420px de large max.) |
top-center |
Barre pleine largeur | Barre horizontale en haut de la page |
top-right |
Carte compacte | Carte flottante dans le coin supérieur droit (420px de large max.) |
middle-center |
Boîte de dialogue modale | Modale centrée avec un voile d'arrière-plan semi-transparent |
bottom-left |
Carte compacte | Carte flottante dans le coin inférieur gauche (420px de large max.) |
bottom-center |
Barre pleine largeur | Barre horizontale en bas de la page (par défaut) |
bottom-right |
Carte compacte | Carte flottante dans le coin inférieur droit (420px de large max.) |
Catégories de cookies
La colonne de droite (largeur 5/12) affiche les quatre catégories de cookies avec des interrupteurs :
- Essentiels : toujours activés, ne peuvent pas être désactivés (affichés avec un badge “Toujours actif”). Il s'agit des cookies nécessaires au fonctionnement du site (sessions, jetons CSRF, etc.).
- Analytique : activable. Lorsqu'elle est activée, les visiteurs peuvent accepter ou refuser les cookies analytiques (Google Analytics, Hotjar, etc.).
- Marketing : activable. Lorsqu'elle est activée, les visiteurs peuvent accepter ou refuser les cookies marketing (Facebook Pixel, reciblage publicitaire, etc.).
- Préférences : activable. Lorsqu'elle est activée, les visiteurs peuvent accepter ou refuser les cookies de préférences (langue, thème, personnalisation, etc.).
Journaux & rétention
Une troisième carte pleine largeur, sous les deux colonnes existantes, contrôle la rétention des données et les performances :
- Archive mensuelle des journaux : interrupteur. Lorsqu'il est activé, seuls les journaux du mois en cours restent dans la base de données ; les mois précédents sont compressés en gzip et déplacés vers le stockage privé (voir Admin : Archives). Un raccourci vers la page Archives apparaît à côté de l'interrupteur.
- Rétention des journaux (jours) : entier (1–7300). Les lignes de la base de données et les fichiers d'archive plus anciens que cette valeur
sont définitivement supprimés par la tâche quotidienne
gdpr:purge-logs. Le RGPD recommande généralement 2 à 6 ans pour les preuves de consentement. - Fenêtre de déduplication : entier en minutes (0–1440). Si une entrée de consentement identique existe pour le
même utilisateur/IP dans cette fenêtre, la nouvelle écriture est ignorée et l'enregistrement existant est réutilisé. Mettez
0pour désactiver. - TTL du cache des statistiques : entier en secondes (0–86400). Durée pendant laquelle les statistiques du tableau de bord mises en cache restent valides.
Le cache est automatiquement invalidé dès qu'un journal de consentement est créé ou supprimé. Mettez
0pour désactiver la mise en cache. - Vider le cache des statistiques maintenant : bouton qui purge les statistiques mises en cache à la demande (utile après des suppressions en masse ou des imports).
Statistiques d'aperçu des consentements
En haut de la page des paramètres, cinq cartes de statistiques affichent les métriques de consentement des 30 derniers jours :
- Total des consentements : nombre total d'actions de consentement enregistrées
- Tout accepté : visiteurs ayant cliqué sur “Tout accepter”
- Tout refusé : visiteurs ayant cliqué sur “Tout refuser”
- Personnalisé : visiteurs ayant enregistré des préférences personnalisées
- Taux d'acceptation : pourcentage de “Tout accepté” par rapport au total des consentements
Ces statistiques sont mises en cache pendant gdpr_stats_cache_ttl secondes (15 minutes par défaut) pour garder la page rapide sur
des bases de données contenant des millions de lignes.
Admin : Journaux de consentement
La page Journaux de consentement (RGPD → Journaux de consentement) fournit une piste d'audit complète de chaque décision de consentement des visiteurs, comme l'exige l'article 7 du RGPD. La page est entièrement pilotée en AJAX : le filtrage, la pagination, la suppression en ligne et les actions groupées rafraîchissent tous le tableau sur place sans rechargement complet.
Carte de statistiques
Une carte dédiée en haut de la page affiche quatre mini-cartes de statistiques pour les 30 derniers jours (indépendantes des filtres du tableau ci-dessous) :
- Total des consentements (couleur neutre)
- Tout accepté (couleur succès/vert)
- Tout refusé (couleur danger/rouge)
- Taux d'acceptation (couleur d'accent, affiché en pourcentage)
Ces chiffres sont mis en cache pendant gdpr_stats_cache_ttl secondes et se rafraîchissent automatiquement lorsqu'un journal est
créé ou supprimé.
Actions de la page
L'en-tête de la page expose trois boutons d'action soumis à permission :
- Archives (affiché uniquement lorsque le mode archive est activé) : ouvre le navigateur d'archives mensuelles
(voir ci-dessous). Nécessite
gdpr.archives.view. - Exporter en CSV : télécharge un fichier CSV des lignes actuellement filtrées, avec un BOM UTF-8 pour la compatibilité
avec Excel. Colonnes :
id,created_at,user_id,user_name,user_email,ip_address,user_agent,action,categories(JSON). Nécessitegdpr.consent_logs.export. - Purger maintenant : met en file d'attente le job
PurgeConsentLogsJobpour supprimer immédiatement les lignes de la base de données et les fichiers d'archive au-delà de la période de rétention (demande une confirmation). Nécessitegdpr.consent_logs.delete.
Filtres
Tous les filtres sont alignés sur une seule ligne dans l'en-tête de la carte et déclenchent un rafraîchissement AJAX :
- Recherche (avec un délai de 300 ms) : filtre par adresse IP, nom d'utilisateur ou e-mail de l'utilisateur.
- Action : liste déroulante avec
accepted_all,rejected_all,customized,withdrew. - Date de début et Date de fin : sélecteurs natifs
<input type="date">qui appliquent une plagewhereDate(created_at, …).
Le bouton Exporter en CSV respecte les filtres actuellement appliqués.
Tableau des journaux
Un tableau paginé (25 enregistrements par page par défaut) avec les colonnes suivantes :
| Colonne | Description |
|---|---|
| Sélection | Case à cocher de ligne + “tout sélectionner” dans l'en-tête. Affichée uniquement lorsque l'utilisateur possède gdpr.consent_logs.delete. |
| Visiteur | Avatar de l'utilisateur + nom/e-mail (si authentifié) ou libellé “Invité” (si anonyme). |
| Adresse IP | Adresse IP du visiteur, affichée en police monospace/code. |
| Action | Badge coloré : Tout accepté (vert), Tout refusé (rouge), Personnalisé (jaune), Retiré (gris). |
| Catégories | Badges en ligne pour chaque catégorie indiquant l'état activé (plein) ou désactivé (contour). |
| Date | Temps relatif lisible (ex. “il y a 2 heures”) avec la date complète dans une infobulle. |
| Actions | Icône de corbeille par ligne qui supprime l'entrée via AJAX après une demande de confirmation. |
Suppression groupée
Cocher une ou plusieurs cases de ligne fait apparaître une barre d'actions groupées flottante en haut de la liste. Cliquez sur Supprimer la sélection et confirmez l'invite SweetAlert pour supprimer toutes les lignes sélectionnées en une seule requête AJAX. La sélection est réinitialisée et le tableau se rafraîchit en cas de succès.
Déduplication
Avant d'insérer une nouvelle ligne, GdprService::logConsent() recherche un journal récent identique (même
user_id ou IP, même action, mêmes catégories) créé dans la fenêtre
gdpr_dedup_window_minutes. Si un tel journal est trouvé, l'enregistrement existant est renvoyé et aucune nouvelle ligne n'est
écrite. Cela évite que le tableau ne se remplisse lorsqu'un visiteur recharge une page ou bascule rapidement son consentement.
État vide
Lorsqu'aucun journal ne correspond aux filtres actuels, un état vide convivial est affiché avec une grande icône et un message expliquant que les enregistrements apparaîtront dès que des visiteurs interagiront avec la bannière.
Admin : Archives
La page Archives (RGPD → Archives) n'est visible dans la barre latérale que lorsque
gdpr_archive_enabled est activé. Elle liste tous les fichiers d'archive mensuels gzippés trouvés sous
storage/app/private/gdpr/{year}/{month}/consent-logs-{year}-{month}.csv.gz.
Comment les archives sont créées
Chaque 1er du mois à 00:05, la commande planifiée gdpr:archive-monthly s'exécute (si le paramètre
d'archive est activé). Elle effectue les opérations suivantes pour chaque mois antérieur au mois en cours qui ne possède pas encore
de fichier d'archive :
- Diffuse chaque journal de ce mois dans un tampon CSV (1000 lignes à la fois).
- Compresse le CSV en gzip et l'écrit sur le disque privé au chemin indiqué ci-dessus.
- Supprime les lignes archivées de
gdpr_consent_logspar lots, dans une transaction de base de données par lot. - Enfin, élague tous les fichiers d'archive plus anciens que
gdpr_log_retention_days.
Parcourir les archives
La page d'administration regroupe les fichiers par année dans une liste repliable. Chaque ligne affiche le mois, le nom du fichier, la taille du fichier et
l'horodatage de l'archive, ainsi qu'un bouton Télécharger qui renvoie le fichier gzip au navigateur. L'accès
à la navigation comme au téléchargement est soumis à permission (gdpr.archives.view et
gdpr.archives.download).
year / month /
filename à l'aide de motifs regex stricts et renvoie une erreur 404 pour tout ce qui se trouve en dehors du
répertoire de stockage gdpr/.
CLI & planification
L'add-on enregistre deux commandes Artisan et leurs entrées planifiées correspondantes. Les deux sont câblées automatiquement
dans GdprServiceProvider::boot()—aucune modification de
routes/console.php n'est nécessaire.
| Commande | Planification | Rôle |
|---|---|---|
gdpr:purge-logs |
Chaque jour à 00:00 | Distribue PurgeConsentLogsJob : supprime les lignes de la base de données plus anciennes que gdpr_log_retention_days,
élague les fichiers d'archive expirés et vide le cache des statistiques. |
gdpr:archive-monthly [--force] |
Le 1er de chaque mois à 00:05 | Distribue ArchiveMonthlyConsentLogsJob : archive chaque mois passé terminé, puis élague
les archives expirées. Ne fait rien du tout lorsque gdpr_archive_enabled est désactivé, sauf si
--force est passé. |
Les deux jobs implémentent ShouldQueue ; ils s'exécutent donc sur la connexion de file d'attente que vous configurez. Avec le
pilote sync par défaut, ils s'exécutent dans le processus ; sur Redis/DB, ils s'exécutent dans un worker. Confirmez qu'ils sont
actifs avec php artisan schedule:list.
Front-end : Bannière de cookies
La bannière de consentement aux cookies est un composant HTML/CSS/JS autonome qui est injecté automatiquement
dans chaque page front-end via le middleware InjectCookieBanner.
Vue principale de la bannière
La vue principale affiche :
- Icône de cookie : une illustration de cookie en SVG inline
- Titre : “Préférences de cookies”
- Message : une brève explication de l'utilisation des cookies
- Lien vers la politique de confidentialité : affiché uniquement si une URL est configurée dans les paramètres
- Trois boutons d'action :
- Tout accepter (bouton principal sombre) : accepte toutes les catégories de cookies
- Tout refuser (bouton secondaire gris) : refuse tous les cookies non essentiels
- Personnaliser (bouton fantôme/texte) : ouvre le panneau des préférences
Positions de la bannière
La bannière adapte sa disposition en fonction de la position configurée :
- Positions pleine largeur (
top-center,bottom-center) utilisent une disposition flex horizontale avec le contenu et les boutons côte à côte. Largeur max. 860px, centrée. - Positions en coin (
top-left,top-right,bottom-left,bottom-right) utilisent une disposition en carte compacte (420px max.) avec le contenu empilé. - Position modale (
middle-center) centre la bannière avec un voile d'arrière-plan semi-transparent, fonctionnant comme une boîte de dialogue modale (520px max.).
Panneau des préférences
Cliquer sur “Personnaliser” fait passer de la vue principale au panneau des préférences (sans rechargement de page). Le panneau affiche :
- Bouton Retour avec une icône chevron : revient à la vue principale de la bannière
- Liste des catégories (défilante, hauteur max. 280px) avec une ligne par catégorie activée :
- Nom et description de la catégorie
- Catégories obligatoires : affichent un badge “Toujours actif” (pas d'interrupteur)
- Catégories facultatives : affichent un interrupteur CSS personnalisé
- Bouton Enregistrer les préférences : enregistre les catégories sélectionnées et ferme la bannière
Animations
La bannière utilise des animations CSS fluides :
- Glissement depuis le bas pour les positions en bas
- Glissement depuis le haut pour les positions en haut
- Fondu + mise à l'échelle pour la position modale centrée
- Animations inversées lorsque la bannière est fermée
Design responsive
Sur les écrans de moins de 768px :
- Les barres pleine largeur passent en disposition verticale (empilée)
- Les cartes en coin s'étendent sur toute la largeur
- Les boutons d'action s'empilent verticalement et occupent toute la largeur
Traductions
Des fichiers de traduction sont fournis pour l'anglais (en) et le français (fr).
Toutes les chaînes utilisent le préfixe d'espace de noms gdpr::.
Clés de traduction
| Section | Motif de clé | Description |
|---|---|---|
| Catégories | gdpr::messages.categories.* |
Noms et descriptions des catégories (necessary, analytics, marketing, preferences) |
| Actions | gdpr::messages.actions.* |
Libellés des actions de consentement (accepted_all, rejected_all, customized, withdrew) |
| Positions | gdpr::messages.positions.* |
Libellés des positions de la bannière pour le sélecteur admin |
| Front-end | gdpr::messages.front.* |
Chaînes de l'interface de la bannière (titre, message, libellés des boutons, lien de confidentialité) |
| Paramètres admin | gdpr::messages.admin.settings.* |
Libellés, indications et titres de sections de la page des paramètres |
| Journaux de consentement admin | gdpr::messages.admin.consent_logs.* |
Libellés, en-têtes de colonnes et état vide de la page des journaux de consentement |
| Statistiques admin | gdpr::messages.admin.stats.* |
Libellés des cartes de statistiques (total_consents, accepted_all, etc.) |
| Archives admin | gdpr::messages.admin.archives.* |
Libellés du navigateur d'archives (title, subtitle, month, filename, size, archived_at, download, état vide) |
| Messages | gdpr::messages.admin.messages.* |
Messages flash (settings_updated, stats_cache_cleared) |
Mise à jour
Il existe deux façons de mettre à jour cet add-on : via le panneau d'administration (recommandé) ou en remplaçant manuellement les fichiers.
Méthode 1 : Téléversement via le panneau d'administration (recommandé)
- Téléchargez le dernier fichier
.zipde cet add-on. - Allez dans Panneau d'administration → Add-ons et cliquez sur le bouton Téléverser.
- Sélectionnez ou glissez le fichier
.zipdans la zone de téléversement. - Une invite de confirmation affichera les numéros de version actuelle et nouvelle. Cliquez sur Remplacer pour continuer.
- Allez dans Panneau d'administration → Mise à jour du système (
/admin/update) pour appliquer les migrations de base de données en attente.
Méthode 2 : Remplacement manuel des fichiers
Étape 1 : Remplacer les fichiers
Remplacez le répertoire de l'add-on par la nouvelle version.
Étape 2 : Exécuter les migrations
Étape 3 : Vider les caches
Étape 4 : Vérifier
Visitez RGPD → Paramètres dans le panneau d'administration pour confirmer que tous les paramètres sont intacts et que la bannière fonctionne correctement sur le front-end.
Dépannage
La bannière n'apparaît pas sur le front-end
Vérifiez les points suivants :
- L'add-on est activé dans Admin → Add-ons.
- Le paramètre
gdpr_enabledest défini sur1(activé) dans les paramètres. - Vous n'avez pas déjà un cookie
gdpr_consentdéfini. Effacez les cookies ou utilisez une fenêtre de navigation privée pour tester. - La page est une réponse HTML standard avec une balise
</body>(le middleware recherche cette balise pour injecter la bannière). - Vous consultez une page front-end, pas une page d'administration (les routes admin sont exclues).
La bannière apparaît sur les pages d'administration
Cela ne devrait pas se produire : le middleware ignore explicitement les routes admin via isAdminPanelRoute().
Si cela se produit malgré tout, vérifiez que :
- La fonction helper
isAdminPanelRoute()est définie et fonctionne dans votre installation principale de LaraClassifier / JobClass. - Votre préfixe de route admin correspond à la valeur configurée dans
config('larapen.core.admin_prefix').
Le cookie de consentement est chiffré / illisible par JavaScript
L'add-on exclut explicitement le cookie gdpr_consent du middleware EncryptCookies de Laravel.
Si le cookie est toujours chiffré :
- Assurez-vous que le
GdprServiceProviderest correctement enregistré (l'add-on est actif). - Vérifiez qu'aucun middleware personnalisé ou package ne rechiffre le cookie.
- Effacez les cookies de votre navigateur et donnez à nouveau votre consentement : d'anciens cookies chiffrés issus d'une configuration précédente peuvent persister.
Les journaux de consentement ne sont pas enregistrés
- Vérifiez que
gdpr_log_consentsest défini sur1(activé) dans les paramètres admin. - Vérifiez que la table
gdpr_consent_logsexiste (exécutezphp artisan migrate). - Consultez les journaux de votre serveur pour détecter des erreurs de base de données (ex. problèmes de permissions).
La position de la bannière ne change pas
- Après avoir changé la position dans les paramètres admin, veillez à effacer le cookie
gdpr_consent(ou utilisez une fenêtre de navigation privée) : la bannière n'apparaît que pour les visiteurs sans cookie de consentement. - Videz le cache des vues :
php artisan view:clear.
Les catégories n'apparaissent pas dans le panneau des préférences
Seules les catégories activées dans les paramètres admin apparaissent dans le panneau des préférences. La catégorie “Essentiels” apparaît toujours. Pour les catégories facultatives :
- Vérifiez que
gdpr_category_analytics,gdpr_category_marketinget/ougdpr_category_preferencessont définis sur1dans les paramètres. - Les catégories désactivées sont filtrées par le middleware
InjectCookieBanneravant le rendu de la vue.
Rétention / purge des journaux
La rétention est entièrement automatisée. La commande planifiée gdpr:purge-logs s'exécute chaque jour à 00:00 et
supprime à la fois les lignes de la base de données et les fichiers d'archive plus anciens que gdpr_log_retention_days
(par défaut : 730 jours / 2 ans, configurable depuis la page Paramètres). Vous pouvez également :
- La déclencher à la demande depuis la page Journaux de consentement via le bouton Purger maintenant
(nécessite
gdpr.consent_logs.delete). - L'exécuter manuellement :
php artisan gdpr:purge-logs. - Vérifier la planification avec
php artisan schedule:list—gdpr:purge-logs(quotidien) etgdpr:archive-monthly(mensuel, le 1er à 00:05) doivent tous deux apparaître.
Le job d'archive mensuelle ne s'exécute pas
- Assurez-vous que
gdpr_archive_enabledest défini sur1dans les Paramètres ; sinon le job s'arrête prématurément. Passez--forceàphp artisan gdpr:archive-monthlypour contourner cette vérification. - Confirmez que le planificateur de Laravel est câblé (
* * * * * cd /path && php artisan schedule:rundans votre crontab). Sans lui, aucune tâche planifiée ne se déclenche jamais. - Vérifiez que le disque
localest accessible en écriture et questorage/app/private/gdpr/existe (il est créé à la volée par le job).
La page Archives n'apparaît pas dans la barre latérale
- L'élément de menu Archives est masqué à moins que le paramètre
gdpr_archive_enabledsoit activé et que l'utilisateur admin actuel possède la permissiongdpr.archives.view. - Si vous venez de basculer le paramètre, rechargez la page d'administration : la barre latérale est régénérée à chaque requête et le prendra en compte.
Les statistiques du tableau de bord semblent obsolètes
- Les statistiques sont mises en cache pendant
gdpr_stats_cache_ttlsecondes (15 minutes par défaut). Le cache est automatiquement vidé à chaque création/suppression de journal. - Après un import en masse ou un nettoyage manuel de la base de données, cliquez sur Vider le cache des statistiques maintenant sur la page Paramètres pour forcer un recalcul.
- Mettez
gdpr_stats_cache_ttlà0pour désactiver complètement la mise en cache (déconseillé sur de grands jeux de données).
Erreur de jeton CSRF sur les points de terminaison de consentement
Tous les points de terminaison de consentement (/gdpr/accept-all, etc.) requièrent un jeton CSRF valide.
Le JavaScript de la bannière inclut le jeton issu de la vue Blade rendue. Si vous voyez des erreurs 419 :
- Assurez-vous que votre session Laravel est correctement configurée.
- Vérifiez que le groupe de middleware
web(qui inclutVerifyCsrfToken) est appliqué aux routes de consentement. - Si vous utilisez une vue de bannière personnalisée, assurez-vous qu'elle transmet le jeton CSRF dans l'en-tête
X-CSRF-TOKENdes requêtes fetch.
GDPR & Cookie Consent v1.0.0 : un add-on LaraClassifier / JobClass.
© BeDigit. Tous droits réservés.