Aller au contenu

RGPD & Conformite

ArtisanCMS est concu pour faciliter la conformite au Reglement General sur la Protection des Donnees (RGPD). Les mecanismes de protection de la vie privee sont integres nativement.

Le module d’analytics fonctionne entierement cote serveur. Aucun script externe n’est injecte dans les pages. Les donnees sont collectees par un middleware Laravel, les adresses IP sont hachees (SHA-256) et aucun cookie de tracking n’est depose sans consentement.

class TrackPageView
{
public function handle(Request $request, Closure $next): Response
{
$response = $next($request);
if ($this->shouldTrack($request)) {
PageView::create([
'url' => $request->path(),
'referrer' => $request->header('referer'),
'user_agent' => $request->userAgent(),
'ip_hash' => hash('sha256', $request->ip()),
'country' => GeoIp::country($request->ip()),
]);
}
return $response;
}
}

Lorsqu’un navigateur envoie DNT: 1, le middleware desactive automatiquement la collecte :

private function shouldTrack(Request $request): bool
{
if ($request->header('DNT') === '1') {
return false;
}
if (config('cms.analytics.exclude_bots') && $this->isBot($request)) {
return false;
}
return config('cms.analytics.enabled', true);
}

La banniere de consentement est configurable dans config/cms.php :

'cookie_consent' => [
'enabled' => true,
'position' => 'bottom', // 'bottom', 'top', 'modal'
'style' => 'bar', // 'bar', 'box', 'modal'
'categories' => [
'necessary' => true, // Toujours actif, non desactivable
'analytics' => false, // Opt-in requis
'marketing' => false, // Opt-in requis
],
],

Seuls les cookies necessaires (session, CSRF) sont actifs sans consentement explicite.

DonneeTraitementJustification
Adresse IPHachee (SHA-256)Analytics anonymisees
User-AgentStockeDetection des navigateurs
URL visiteeStockeeStatistiques de frequentation
Email utilisateurStockeAuthentification, notifications
Metadonnees EXIFSupprimees a l’uploadProtection de la vie privee

La duree de conservation des page views est configurable (90 jours par defaut). La commande cms:purge-views supprime les donnees expirees par lots :

Fenêtre de terminal
# Purge manuelle
php artisan cms:purge-views
# Automatisation via le scheduler
$schedule->command('cms:purge-views')->weekly();
Fenêtre de terminal
CMS_ANALYTICS_RETENTION=90

Les utilisateurs peuvent exporter leurs donnees personnelles depuis leur profil (droit a la portabilite, article 20 RGPD). L’export genere un JSON contenant : profil, contenu cree et journal d’activite.

La suppression applique un soft delete par defaut, avec une periode de grace avant purge definitive :

$user->delete(); // Soft delete : definit deleted_at
$user->forceDelete(); // Purge definitive de toutes les donnees

Le systeme de newsletter respecte les principes RGPD :

  • Opt-in explicite : abonnement par action volontaire uniquement.
  • Double opt-in : email de confirmation pour valider l’inscription.
  • Desabonnement en un clic : lien present dans chaque email.
  • Pas de cases pre-cochees : aucune inscription par defaut.

Les images uploadees sont automatiquement nettoyees de leurs metadonnees EXIF (coordonnees GPS, modele d’appareil, date de prise de vue) pour proteger la vie privee des utilisateurs.