security:
    # 🔐 Hachage sécurisé des mots de passe
    password_hashers:
        Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto'

    # 👤 Provider utilisateur
    providers:
        app_user_provider:
            entity:
                class: App\Entity\User
                property: email

    # 🧱 Hiérarchie des rôles
    role_hierarchy:
        ROLE_FORMATEUR: [ROLE_USER]
        ROLE_ADMIN: [ROLE_FORMATEUR]

    # 🔥 Firewalls
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            lazy: true
            provider: app_user_provider
            custom_authenticator: App\Security\LoginFormAuthenticator
            entry_point: App\Security\LoginFormAuthenticator

            logout:
                path: app_logout
                target: app_login
                invalidate_session: true
                clear_site_data: ['*']
                csrf_token_id: logout
                enable_csrf: true

            # remember_me désactivé pour forcer la reconnexion
            # remember_me:
            #     secret: '%kernel.secret%'
            #     lifetime: 604800  # 7 jours
            #     path: /
            #     domain: ~
            #     secure: auto
            #     httponly: true
            #     samesite: strict

    # 🔒 Contrôle d'accès - PAGE D'ACCUEIL PUBLIQUE
    access_control:
        # Page d'accueil PUBLIQUE
        - { path: ^/$, roles: PUBLIC_ACCESS }

        # Login PUBLIQUE
        - { path: ^/login$, roles: PUBLIC_ACCESS }

        # Assets publiques (CSS, JS, images)
        - { path: ^/css, roles: PUBLIC_ACCESS }
        - { path: ^/js, roles: PUBLIC_ACCESS }
        - { path: ^/assets, roles: PUBLIC_ACCESS }
        - { path: ^/build, roles: PUBLIC_ACCESS }

        # Pages d'administration (protégées)
        - { path: ^/admin, roles: ROLE_ADMIN }

        # Pages formateur (protégées)
        - { path: ^/formateur, roles: ROLE_FORMATEUR }

        # TOUT LE RESTE protégé (doit être EN DERNIER)
        - { path: ^/.+, roles: IS_AUTHENTICATED_FULLY }

    # ❌ Redirection si accès refusé
    access_denied_url: /login