Passer fokan en gratuit demandait de toucher le prix, le mur, les CGV, la
politique de confidentialité, les messages d'erreur d'API et jusqu'au texte
affiché dans l'agenda du foyer. `FOKAN_MODE` remplace tout ça par un mot, avec
« payant » pour défaut — une variable oubliée ne doit jamais ouvrir l'accès.
Ce qui rend la bascule bon marché était déjà là : `getSubscription().isActive`
est la porte unique du produit, et un accès gratuit est un statut « active »
sans date de fin, que `!periodEnd` rendait déjà permanent. Elle n'a pas changé.
Le mode décide de ce qu'on raconte à qui n'est pas entré, jamais de ce qu'on
lui ouvre.
La liste d'attente n'existe pas : pas de table, pas de file, pas de rang
stocké. Un foyer sans place porte le statut « attente », et le passage de 4 h
admet les plus anciens sur `attente_depuis`. Relever FOKAN_PLACES_GRATUITES
suffit — la variable est relue à chaque exécution du cron.
Trois pièges fermés au passage :
- le mode se lit côté serveur et descend en props. `process.env` n'existe pas
dans le bundle navigateur : un import depuis un composant client aurait rendu
« payant » côté client et « gratuit » côté serveur, en silence, à
l'hydratation ;
- /api/checkout est fermé au serveur, pas seulement à l'écran. Une clé Stripe
encore présente — le cas normal d'une bascule qu'on veut pouvoir défaire —
l'aurait fait aboutir, et on aurait encaissé pour un accès offert ;
- /api/stripe/portal reste ouvert. Un abonnement souscrit en ligne doit se
résilier en ligne (art. L215-1-1) : fermer la sortie parce qu'on ferme
l'entrée enfermerait ceux qui ont payé.
Cinq mentions légales tombent avec la vente — SIREN, téléphone, médiateur,
régime de TVA, garantie de conformité — parce qu'un article décrivant une
obligation qui n'existe pas est pire qu'un article absent. Deux apparaissent :
la gratuité (un service gratuit qui tait son financement se fait lire « c'est
toi le produit ») et le plafond d'accès, qui est une limitation subie. La
politique de confidentialité perd Stripe quatre fois : déclarer un
sous-traitant qui ne traite rien n'est pas prudent, c'est inexact.
Un test rend réellement les trois pages dans les deux modes plutôt que de
relire des ternaires — c'est la seule façon de vérifier qu'aucune n'affirme
une chose fausse, et il tient aussi la numérotation des articles.
Corrigé en passant : les mentions légales renvoyaient encore les sources vers
la page d'accueil, où D-064 les a retirées la veille.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>