Remplace la feuille à imprimer par un recueil électronique du consentement,
construit selon l'article 9 du Code civil (droit à l'image = droit de la
personnalité, personnel) :
- Le membre signe une fois, dans son espace, une autorisation GÉNÉRALE
couvrant toute photo de lui — plus besoin de valider chaque publication.
Capture d'une signature dessinée (pad canvas), nom, horodatage et IP :
une signature électronique simple, preuve de consentement (art. 7 RGPD).
Étape proposée au premier accès mais NON bloquante (« Plus tard »).
- Un adulte ne pouvant pas consentir pour un autre, l'image des
accompagnants est recueillie PAR PERSONNE au moment de l'inscription à
la rencontre : case « autorise / n'autorise pas » par participant +
attestation du membre d'avoir informé chaque personne et obtenu son
accord (mineur : représentant légal).
- La publication n'est plus bloquée par le statut de consentement (évite
le blocage systématique) ; le consentement est la preuve conservée.
- Admin : statut d'autorisation dans la liste des membres (avec la
signature consultable) et par participant dans la liste des inscrits
(badges + exports Excel/impression).
- Table image_consents (journal append-only) et colonne
inscriptions.image_consent, migrations idempotentes.
- Politique de confidentialité mise à jour (consentement par personne,
fondement art. 9, cas des mineurs).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Nouvelles pages publiques /mentions-legales et /confidentialite,
conformes aux obligations d'une association loi 1901 : LCEN (identité de
l'éditeur, RNA, directeur de la publication, hébergeur), RGPD art. 13
(responsable de traitement, données/finalités/bases légales par
formulaire, durées de conservation, destinataires, droits, réclamation
CNIL), cookies (unique cookie de session exempté de consentement — pas
de bandeau nécessaire), droit à l'image et propriété intellectuelle.
Les pages sont alimentées par les paramètres de l'association existants,
étendus des champs légalement requis : numéro RNA, hébergeur (nom,
adresse, téléphone) et date de mise à jour des pages légales — nouvelle
carte « Pages légales & hébergeur » dans l'onglet Paramètres, avec
alerte listant les champs requis manquants. Un champ vide s'affiche
« à compléter » sur la page publique plutôt que de disparaître.
Également : liens cliquables Mentions légales / Confidentialité dans le
pied de page, et mentions d'information RGPD sous les formulaires
publics (demande d'adhésion, inscription à une rencontre).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Chaque rencontre dispose d'un bouton « ✉ Email » dans l'administration
(admins et modérateurs) qui génère un email HTML prêt à envoyer, aux
couleurs du site avec le logo du club : titre, description, encadré
date/heure/lieu/places restantes et bouton d'inscription.
- Nouvelle route GET /api/admin/rencontres/:id/email : construit l'email
(mise en page en tables + styles inline, compatible clients mail) avec
des URL absolues dérivées de l'hôte de la requête.
- Le bouton de l'email pointe vers /?inscription=<id> : la page d'accueil
ouvre alors automatiquement la modale d'inscription de la rencontre.
- Modale d'aperçu dans l'admin : copie de l'email (HTML enrichi presse-
papiers pour coller directement dans un logiciel de messagerie), copie
de l'objet et du lien d'inscription, téléchargement du fichier .html.
- Les images publiques (logo, uploads) sont maintenant servies avec
Cross-Origin-Resource-Policy: cross-origin pour que le logo se charge
dans les webmails et l'aperçu.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Le fondu en CSS mask-image ne s'affichait pas correctement : les cartes
en bord de carrousel étaient tronquées net au lieu de s'estomper.
Remplacé par un vrai dégradé en overlay (deux calques blanc→transparent
superposés aux bords), plus fiable visuellement, avec une largeur de
fondu réduite sur mobile.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
- Le carrousel « Nos entreprises membres » est maintenant contenu dans le
même conteneur que le reste des sections (au lieu de déborder pleine
largeur jusqu'aux bords de l'écran).
- Header : la barre de navigation passe en hauteur flexible pour ne plus
être tronquée quand les liens (dont « Rencontres passées ») passent à
la ligne sur petit écran.
- Back-office admin : la barre latérale fixe de 250px passait en dehors
de l'écran sur mobile ; elle se replie désormais en liste verticale
au-dessus du contenu sous 860px.
- Cartes de rencontres passées et carrousel photo plein écran : paddings,
tailles de police et de flèches réduits sur petit écran ; le fond du
carrousel plein écran passe d'un rgba semi-transparent à une couleur
opaque (le fond semi-transparent laissait apparaître le header du site
par transparence sur mobile).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Le nombre d'entreprises membres et de rencontres organisées provient
maintenant des données réelles (nombre de membres validés, nombre de
rencontres passées) au lieu de chiffres codés en dur. Le nombre de
membres est aussi affiché dans le pied de page.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Photos :
- Nouvelle table rencontre_passee_photos (photos illimitées par rencontre
passée, avec position). Migration idempotente au démarrage des anciennes
colonnes image_path/_2/_3 vers cette table (puis colonnes nullées)
- Le nombre de photos affiché est désormais celui réellement uploadé
(calculé), le champ manuel nb_photos n'est plus utilisé
- Gestion admin : ajout illimité, choix de la photo « principale » (mise
en avant), suppression réservée aux admins (les modérateurs ajoutent et
réordonnent mais ne suppriment pas)
Participants auto :
- rencontres_passees.rencontre_id (FK, ON DELETE SET NULL) ; quand une
rencontre passée est liée à une rencontre, le nombre de participants est
calculé depuis ses inscriptions ; sinon valeur manuelle de repli. Le
formulaire admin propose la liaison et affiche le compte auto
Public :
- Nouvelle page /rencontres-passees (menu « Rencontres passées ») listant
toutes les rencontres passées
- Carrousel plein écran (composant Carousel) montrant TOUTES les photos
(flèches, clavier ←/→/Échap, compteur, miniatures) ; ouvert au clic sur
une carte. La grille d'accueil montre 3 aperçus avec badge « +N » et un
lien « Voir toutes les rencontres → »
- Composant PastEventCard partagé entre l'accueil et la page dédiée
Vérifié : 34 + 21 + 26 tests existants au vert, 19 nouveaux tests
(participants auto liés/déliés, upload illimité, nb_photos calculé,
principale, restrictions modérateur sur suppression de photo, migration
legacy des colonnes inline), parcours navigateur complet (galerie admin,
page publique, carrousel).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o
Rencontres passées (section « Ils y étaient » de l'accueil) :
- Nouvel onglet « Rencontres passées » (admin + modérateur) : création,
édition, jusqu'à 3 photos par rencontre (1 grande + 2 petites, upload
après enregistrement — même schéma que la photo des rencontres à venir)
- Nouvelles colonnes rencontres_passees.image_path/_2/_3 (migration
ALTER TABLE IF NOT EXISTS)
- Home.jsx affiche désormais les vraies photos uploadées (repli sur le
motif placeholder si absentes) ; ordre passé de ORDER BY id à
ORDER BY id DESC (les plus récentes en premier, seed réordonné en
conséquence pour préserver l'affichage actuel)
- Suppression réservée aux administrateurs
Modérateurs : plus aucune action destructrice possible, imposé côté
serveur (adminOnly) et masqué côté interface :
- Validation/suspension d'un membre (toggle-valide)
- Suppression d'une rencontre, d'une rencontre passée, d'une inscription
Vérifié : 34 + 21 + 26 tests existants toujours au vert, 21 nouveaux
tests (CRUD rencontres passées, upload des 3 emplacements photo, ordre
d'affichage, restrictions modérateur sur chaque action désormais admin-
only), parcours navigateur complet (upload des 3 photos, rendu réel sur
la page d'accueil).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fkg15RCxNgUys4ru73He2o