MODULE · #57 PORTAIL
🌐

Portail Client

Espace client en libre-service — consultation des séances, signature de devis, paiement CB, téléchargement de documents. Accès sécurisé JWT + cookie httpOnly, white-label aux couleurs du professionnel.

JWT HS256Stripe intégréYousignMobile-firstMulti-tenant
11
Routes API
4
Onglets client
JWT
Authentification
White-label
Brandable
01 Architecture

Stack technique du portail client.

Architecture

  • Frontend : route /client/[token] — Next.js 15 App Router
  • Backend : 11 routes instance.use() dans custom-routes.ts
  • Authentification : token magique signé JWT (validé 7 jours), cookie portail_session httpOnly
  • Base de données : 4 tables portail_client_acces, portail_client_session, portail_client_notification, portail_client_action
  • Sécurité : token unique par client, révocation 1-clic, journal des connexions
02 Routes API

11 endpoints disponibles pour le portail.

RouteDescription
POST/api/portail/authValidation du token magique + création session
GET/api/portail/meProfil du client connecté
GET/api/portail/animauxListe des animaux du client
GET/api/portail/seancesHistorique des séances (CAC inclus)
GET/api/portail/facturesListe des factures avec statut paiement
GET/api/portail/notificationsNotifications non lues
POST/api/portail/devis/:id/signerSignature électronique Yousign
POST/api/portail/facture/:id/payerInitialisation Stripe Checkout
POST/api/portail/envoyerEnvoi du lien magique par email (côté admin)
POST/api/portail/access/toggleActiver/désactiver un accès
POST/api/portail/confirmerConfirmer un RDV depuis le portail
03 4 onglets client

Vues disponibles pour le client connecté.

Onglet Animaux

  • Liste des animaux avec photo, espèce, race, âge
  • Fiche détaillée : vaccins, traitements, vétérinaire référent
  • Mise à jour autorisée des coordonnées non sensibles

Onglet Séances

  • Historique chronologique de toutes les séances
  • Compte-rendu détaillé, graphique CAC, photos avant/après
  • Téléchargement PDF du compte-rendu de séance

Onglet Factures

  • Toutes les factures avec statut (Payée / Impayée / En retard)
  • Bouton Payer maintenant → Stripe Checkout
  • Téléchargement PDF de la facture (NF525)

Onglet Documents

  • Devis en attente de signature (signature Yousign intégrée)
  • Contrats signés, ordonnances, bilans
  • Téléchargement individuel ou en lot ZIP
04 Notes techniques

Bugs corrigés et bonnes pratiques.

R-29 Leaflet race condition : page /app/clients présentait un crash sur certains navigateurs — fix déployé S66 (placeholder carte au lieu du geocoding externe).
Notifications portail : table portail_client_notification + helper envoyerNotification() (S68) — email auto dès qu'un document est mis à disposition.