mirror of
https://github.com/R0m1k3/PleinR.git
synced 2026-10-11 17:27:54 +02:00
Bloc « Informations pratiques » (fiche adhérent) - Suppression des dégradés hors palette (radial doré de la section, dégradés crème/bleu des deux sous-cartes) au profit du vocabulaire visuel du site : carte blanche bordée, sous-cartes plates sur le fond de champ, variables CSS. - La pastille « Préparer votre visite » devient une puce arrondie identique aux badges du reste du site ; le chip d'ouverture reprend les teintes de statut. - Les glyphes texte ◷ et ↗ sont remplacés par des icônes SVG cohérentes. Suspension des promotions - Nouveau statut `suspended` + colonnes `suspended_by` / `suspended_by_id` / `suspended_at`. - L'adhérent suspend et réactive ses propres promotions depuis Mon espace ; l'association suspend et réactive n'importe laquelle depuis le backoffice. - Une suspension décidée par l'association ne peut pas être levée par l'adhérent : le motif est affiché dans son espace. - Les lectures publiques filtrant déjà sur `live`, une promo suspendue quitte immédiatement l'accueil, l'annuaire et la fiche. Publication Facebook / LinkedIn - `src/lib/social.ts` : publication d'une promo en ligne sur la page Facebook (Graph API, upload multipart car les images sont en data-URI) et sur la page LinkedIn (Posts API + Images API en trois étapes). - Jetons d'accès exclusivement en variables d'environnement ; un réseau non configuré masque son bouton. - Table `social_posts` : chaque tentative est tracée, un échec est rattrapé et affiché sur la carte de la promo sans interrompre le backoffice. - Nouvelle capacité RBAC `publishSocial` (admin + modérateur). Liens sociaux publics - Réglages `association_facebook` / `association_linkedin` éditables dans Paramètres, préremplis avec les pages de l'association. - Section « Plein R sur les réseaux » sur l'accueil et icônes dans le pied de page, masquées si le réglage est vide. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QXNXRC4j5VLfKvpyyisrnb
65 lines
2.8 KiB
Bash
65 lines
2.8 KiB
Bash
# ---- Database (external Postgres) ----
|
|
# With docker-compose the app reaches Postgres via the UNIQUE container name
|
|
# "pleinr-postgres" on the internal port 5432 (avoids collisions with other
|
|
# "postgres" containers on a shared proxy network; NOT the published host port).
|
|
# For local dev outside Docker against the dockerised Postgres, use
|
|
# localhost on the published host port: postgres://pleinr:pleinr@localhost:54329/pleinr
|
|
DATABASE_URL=postgres://pleinr:pleinr@pleinr-postgres:5432/pleinr
|
|
|
|
# Individual vars consumed by the postgres container in docker-compose.yml
|
|
POSTGRES_USER=pleinr
|
|
POSTGRES_PASSWORD=pleinr
|
|
POSTGRES_DB=pleinr
|
|
|
|
# ---- Auth.js (NextAuth v5) ----
|
|
# Optional with docker-compose: if left unset, the container generates and
|
|
# persists one automatically. To set it yourself: openssl rand -base64 32
|
|
AUTH_SECRET=
|
|
# Public URL of the app (used by Auth.js for callbacks).
|
|
# Leave EMPTY behind a reverse proxy (Nginx Proxy Manager, Traefik…): Auth.js
|
|
# auto-detects it from the Host / X-Forwarded-Proto headers (trustHost).
|
|
# Set it only to force a value, e.g. https://pleinr.ffnancy.fr
|
|
AUTH_URL=
|
|
|
|
# ---- First admin user (created by the seed script) ----
|
|
SEED_ADMIN_EMAIL=admin@plein-r.fr
|
|
SEED_ADMIN_PASSWORD=changeme123
|
|
SEED_ADMIN_NAME=Administrateur Plein R
|
|
|
|
# ---- App ----
|
|
NODE_ENV=production
|
|
PORT=3000
|
|
|
|
# URL publique du site, utilisée dans le texte des publications réseaux sociaux
|
|
# (lien vers la fiche de l'adhérent). À défaut, AUTH_URL est utilisé.
|
|
NEXT_PUBLIC_SITE_URL=
|
|
|
|
# ---- Publication des promotions sur les réseaux sociaux ----
|
|
# Facultatif : si ces variables sont vides, le bouton correspondant n'apparaît
|
|
# pas dans le backoffice (le reste du site fonctionne normalement).
|
|
# Ce sont des SECRETS : ils ne doivent jamais être saisis dans le backoffice.
|
|
#
|
|
# Facebook — page de l'association
|
|
# 1. Créer une app sur developers.facebook.com (type « Business »).
|
|
# 2. Ajouter le produit « Facebook Login » et les permissions
|
|
# pages_manage_posts + pages_read_engagement.
|
|
# 3. Générer un jeton de PAGE longue durée (Graph API Explorer puis
|
|
# /oauth/access_token?grant_type=fb_exchange_token) et le coller ci-dessous.
|
|
FACEBOOK_PAGE_ID=
|
|
FACEBOOK_PAGE_ACCESS_TOKEN=
|
|
# Version de la Graph API (facultatif)
|
|
FACEBOOK_GRAPH_VERSION=v21.0
|
|
#
|
|
# LinkedIn — page organisation
|
|
# 1. Créer une app sur linkedin.com/developers, la rattacher à la page
|
|
# « Association Plein R — Bassin de Pompey ».
|
|
# 2. Demander le produit « Community Management API ».
|
|
# 3. Générer un jeton avec les scopes w_organization_social + r_organization_social.
|
|
# L'URN se lit dans l'URL d'administration de la page (numéro d'organisation).
|
|
LINKEDIN_ORGANIZATION_URN=
|
|
# Alternative à l'URN : uniquement le numéro d'organisation
|
|
LINKEDIN_ORGANIZATION_ID=
|
|
LINKEDIN_ACCESS_TOKEN=
|
|
# Version de l'API LinkedIn (facultatif, format AAAAMM)
|
|
LINKEDIN_API_VERSION=202506
|