mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-23 07:08:05 +02:00
URL publique du site réglable depuis le backoffice
Connecter un réseau social imposait de poser NEXT_PUBLIC_SITE_URL dans docker-compose et de redémarrer le conteneur. L'écran Réseaux sociaux porte désormais le champ, pré-rempli avec l'adresse par laquelle l'administrateur consulte la page. - Nouveau réglage `site_public_url` ; `siteUrl()` lit la base puis retombe sur les variables d'environnement, donc les déploiements actuels ne bougent pas. - `siteUrl()`, `redirectUri()`, `authorizeUrl()`, `promoLink()` et `buildPromoMessage()` deviennent asynchrones. - Seule l'origine est conservée : le schéma est ajouté s'il manque, un chemin est retiré, et une adresse invalide revient sur l'écran avec un message au lieu d'une page d'erreur brute. - `saveSiteSettings` saute cette clé : le formulaire Paramètres ne la contient pas et l'aurait écrasée à chaque enregistrement. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QXNXRC4j5VLfKvpyyisrnb
This commit is contained in:
9 files changed
+146
-37
No files matched your search
@@ -58,7 +58,11 @@ site sans traitement supplémentaire.
|
||||
`src/lib/crypto.ts` (AES-256-GCM, clé `SOCIAL_TOKEN_KEY` ou `AUTH_SECRET`), posés
|
||||
depuis `/backend/reseaux`. Les variables d'environnement restent lues en repli.
|
||||
Aucun secret ne doit jamais repartir vers le navigateur.
|
||||
- `isNetworkConfigured()` / `configuredNetworks()` sont **asynchrones** (accès base).
|
||||
- `isNetworkConfigured()` / `configuredNetworks()` / `siteUrl()` / `redirectUri()`
|
||||
sont **asynchrones** (accès base).
|
||||
- L'URL publique est le réglage `site_public_url`, édité sur `/backend/reseaux`
|
||||
(pré-rempli depuis les en-têtes de la requête). `saveSiteSettings` **saute**
|
||||
cette clé : le formulaire Paramètres ne la contient pas et l'écraserait.
|
||||
- Routes OAuth : `src/app/api/social/[network]/{connect,callback}`. Le `state`
|
||||
anti-CSRF passe par un cookie httpOnly ; aucun jeton ne transite par une URL.
|
||||
- Facebook : le jeton de page n'expire pas. LinkedIn : 60 jours, rafraîchissement
|
||||
|
||||
Reference in new issue
Block a user