Conformité RGPD : registre des traitements, droit à l'image, HTTPS

Registre des traitements (art. 30 RGPD) et formulaires d'autorisation de
droit à l'image (majeur / mineur) générés depuis un nouvel onglet « RGPD »
de l'administration (admins uniquement) : documents A4 imprimables et
téléchargeables, pré-remplis à partir des Paramètres de l'association. Le
registre recense les 7 traitements réels de l'application (adhésions,
annuaire, inscriptions, facturation, espace membre, photos, e-mails) avec
finalité, base légale, personnes, données, destinataires et durées ; la
facturation est conservée 10 ans (obligation comptable, art. L123-22).

Politique de confidentialité complétée du traitement de facturation
(adresse, factures, paiements), de la conservation comptable de 10 ans et
des destinataires (trésoriers, expert-comptable, administration fiscale).

HTTPS en production : en-tête HSTS (1 an, includeSubDomains) et redirection
HTTP→HTTPS (308) des requêtes reçues via le reverse proxy (X-Forwarded-Proto),
sans impacter les appels directs (healthcheck). Nouveau drapeau FORCE_HTTPS
dans docker-compose et .env.example, aux côtés de COOKIE_SECURE et
TRUST_PROXY documentés pour la production.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
This commit is contained in:
Claude committed 2026-07-16 20:30:48 +00:00
1 parent 942b5a1ad2
commit 942bc70865
9 files changed
+453 -6

No files matched your search

+3
View File
@@ -9,6 +9,7 @@ import { UsersTab } from '../components/admin/AdminUsers.jsx';
import { EmailCreatorTab } from '../components/admin/AdminEmail.jsx';
import { RequestsTab } from '../components/admin/AdminRequests.jsx';
import { BillingTab } from '../components/admin/AdminBilling.jsx';
import { RgpdTab } from '../components/admin/AdminRgpd.jsx';
// Moderators get members/membership requests/rencontres/inscriptions/rencontres passées
// (create + edit, never delete) — everything else (dashboard, taxonomy,
@@ -25,6 +26,7 @@ const TABS = [
{ key: 'categories', icon: '☲', label: 'Catégories', title: 'Catégories', roles: ['admin'] },
{ key: 'contenu', icon: '▧', label: 'Contenu du site', title: 'Contenu du site', roles: ['admin'] },
{ key: 'parametres', icon: '⚙', label: 'Paramètres', title: "Paramètres de l'association", roles: ['admin'] },
{ key: 'rgpd', icon: '⚖', label: 'RGPD', title: 'Conformité RGPD', roles: ['admin'] },
{ key: 'emails', icon: '✉', label: "Créateur d'e-mail", title: "Créateur d'e-mail", roles: ['admin'] },
{ key: 'utilisateurs', icon: '⚿', label: 'Utilisateurs', title: 'Administrateurs, trésoriers & modérateurs', roles: ['admin'] },
];
@@ -161,6 +163,7 @@ export function AdminShell() {
{tab === 'categories' && <CategoriesTab />}
{tab === 'contenu' && <ContenuTab />}
{tab === 'parametres' && <ParametresTab />}
{tab === 'rgpd' && <RgpdTab />}
{tab === 'emails' && <EmailCreatorTab />}
{tab === 'utilisateurs' && <UsersTab />}
</div>
+13 -4
View File
@@ -50,6 +50,13 @@ export default function Confidentialite() {
<br /><em>Finalité :</em> annuaire public des entreprises membres. <em>Base légale :</em> exécution de l'adhésion ; la photo est publiée avec le consentement de la personne, qui peut la retirer à tout moment depuis son espace membre.
</span>
</div>
<div style={row}>
<span style={cellTitle}>Facturation des adhésions</span>
<span>
Identité, adresse de facturation, email, montants, moyen et date de paiement, numéro de facture.
<br /><em>Finalité :</em> émettre les factures d'adhésion, suivre les paiements et tenir la comptabilité. <em>Base légale :</em> obligation légale (comptable et fiscale) et exécution de l'adhésion.
</span>
</div>
<div style={{ ...row, borderBottom: 'none' }}>
<span style={cellTitle}>Espace membre</span>
<span>
@@ -71,15 +78,17 @@ export default function Confidentialite() {
Les demandes d'adhésion non abouties sont supprimées au plus tard 3 ans après leur dépôt.
Les inscriptions aux rencontres sont conservées le temps de la saison en cours puis archivées
à des fins de statistiques de fréquentation (nombre de participants uniquement).
Les comptes de connexion sont supprimés avec la fiche du membre.
Les factures et pièces comptables sont conservées 10 ans, conformément aux obligations
comptables et fiscales. Les comptes de connexion sont supprimés avec la fiche du membre.
</p>
</LegalSection>
<LegalSection title="Destinataires et hébergement">
<p>
Les données sont accessibles aux seuls administrateurs et modérateurs habilités de
l'association, soumis à une obligation de confidentialité. Les fiches de l'annuaire et les
photographies des rencontres sont, elles, publiées sur le site public.
Les données sont accessibles aux seuls administrateurs, trésoriers et modérateurs habilités de
l'association, soumis à une obligation de confidentialité ; les données comptables peuvent être
communiquées à l'expert-comptable et à l'administration fiscale le cas échéant. Les fiches de
l'annuaire et les photographies des rencontres sont, elles, publiées sur le site public.
</p>
<p>
Les données sont hébergées par <LegalValue value={s.association_host_name} label="nom de l'hébergeur" />,{' '}