Restauration complète du système d'estimation de livraison :
- Page publique /estimer-la-livraison + liens navigation
- Calcul automatique livraison dans FlowController (admin)
- Champs distance/prix + carte Leaflet dans la vue admin flow
- Estimation livraison dans la confirmation de réservation
- Ligne "Frais de livraison" sur les devis générés
Seules les modifications CGV (suppression section 7.2 rayon 30km) sont conservées.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Suppression complète du système de calcul de frais de livraison (rayon 30km depuis Danizy) :
- Route /estimer-la-livraison et template estimate_delivery.twig
- Calcul automatique livraison dans FlowController et ReserverController
- Champs distance/prix livraison dans la vue admin flow
- Ligne "Frais de livraison" sur les devis générés
- Section 7.2 (mise en relation + rayon 30km) dans les CGV (twig + PDF contrat/devis)
- Liens navigation "Estimer la livraison" (desktop + mobile)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Le save() fermait la session prématurément. Le start() garantit que
la session est initialisée avant que le state OAuth y soit stocké.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sauvegarde explicite de la session avant la redirection OAuth pour
garantir la persistance du state parameter. Retry automatique du
flow SSO en cas d'InvalidStateAuthenticationException.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The session cookie was not sent back on HTTP requests because
cookie_secure was hardcoded to true, causing OAuth2 state mismatch.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Affiche un message utilisateur au lieu d'une exception SQL quand
l'email existe déjà. Déplace l'envoi du mail après le flush.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Turbo Drive was intercepting file upload form submissions, causing videos
and photos to not be uploaded. Adding data-turbo="false" ensures the
browser handles these multipart forms natively.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add Cache-Control: no-store headers to Keycloak OAuth start routes so the
HTTP kernel cache never caches the redirect-with-state response, which
caused "Invalid state parameter" errors on subsequent logins.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fusionne le flow en deux étapes (redirect intermédiaire via ?idDevis) en
une seule requête POST : génération PDF, soumission DocuSeal et envoi du
mail de signature se font maintenant directement lors de la création du devis.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>