# see https://symfony.com/doc/current/reference/configuration/framework.html
framework:
    secret: '%env(APP_SECRET)%'

    session:
        cookie_secure: true       # Cookie session HTTPS uniquement
        cookie_samesite: lax      # Protection CSRF cross-site
        cookie_httponly: true     # Inaccessible au JavaScript
        cookie_lifetime: 0        # Expire à la fermeture du navigateur
        gc_maxlifetime: 3600      # Durée de vie serveur : 1h

    # ── Proxy Cloudflare ──────────────────────────────────────────────────────
    # Plages IPv4 officielles Cloudflare (source : https://www.cloudflare.com/ips/)
    # À mettre à jour si Cloudflare publie de nouvelles plages.
    # IMPORTANT : ne pas utiliser REMOTE_ADDR en production — risque de header forgery
    # si quelqu'un contacte o2switch en direct en bypassant Cloudflare.
    trusted_proxies: >-
        127.0.0.1,
        103.21.244.0/22,
        103.22.200.0/22,
        103.31.4.0/22,
        104.16.0.0/13,
        104.24.0.0/14,
        108.162.192.0/18,
        131.0.72.0/22,
        141.101.64.0/18,
        162.158.0.0/15,
        172.64.0.0/13,
        173.245.48.0/20,
        188.114.96.0/20,
        190.93.240.0/20,
        197.234.240.0/22,
        198.41.128.0/17,
        2400:cb00::/32,
        2606:4700::/32,
        2803:f800::/32,
        2405:b500::/32,
        2405:8100::/32,
        2a06:98c0::/29,
        2c0f:f248::/32

    trusted_headers:
        - 'x-forwarded-for'
        - 'x-forwarded-proto'
        - 'x-forwarded-port'
        - 'x-forwarded-host'
        # NOTE : cf-connecting-ip n'est PAS supporté ici par Symfony.
        # L'IP réelle Cloudflare doit être lue manuellement dans le code :
        #   $ip = $request->headers->get('cf-connecting-ip') ?? $request->getClientIp();

    #esi: true
    #fragments: true

when@test:
    framework:
        test: true
        session:
            storage_factory_id: session.storage.factory.mock_file
