security:
    # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords
    password_hashers:
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'

    # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider
    providers:
        app_user_provider:
            entity:
                class: App\Entity\User
                property: email

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            lazy: true
            provider: app_user_provider
            form_login:
                login_path: app_login
                check_path: app_login
                default_target_path: app_account_dashboard
                enable_csrf: true
            logout:
                path: app_logout
                target: app_home
            remember_me:
                secret: '%kernel.secret%'
                lifetime: 604800 # 1 semaine
                path: /
                always_remember_me: false

    # Contrôle d'accès par URL
    access_control:
        # Pages admin - uniquement ROLE_ADMIN
        - { path: ^/admin, roles: ROLE_ADMIN }
        
        # Espace compte client - ROLE_USER minimum
        - { path: ^/compte, roles: ROLE_USER }
        
        # =============================================
        # COMMANDE/PAIEMENT - nécessite authentification
        # =============================================
        # L'utilisateur peut voir son panier (/cart) sans être connecté
        # Mais pour passer commande, il doit se connecter
        - { path: ^/cart/checkout, roles: ROLE_USER }
        - { path: ^/cart/success, roles: ROLE_USER }
        
        # Pages publiques (accueil, panier consultation, etc.)
        # Pas besoin de les lister, elles sont accessibles par défaut

    # Hiérarchie des rôles
    role_hierarchy:
        ROLE_ADMIN: ROLE_USER

when@test:
    security:
        password_hashers:
            Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface:
                algorithm: auto
                cost: 4 # Plus rapide pour les tests
