# config/packages/security.yaml

security:

    # ── Hashage des mots de passe ──────────────────────────────────────────
    password_hashers:
        App\Entity\User:
            algorithm: auto          # bcrypt / argon2id selon dispo serveur

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

    # ── Firewalls ──────────────────────────────────────────────────────────
    firewalls:

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

        main:
            lazy:     true
            provider: app_user_provider

            # Formulaire de login
            form_login:
                login_path:            app_login
                check_path:            app_login
                username_parameter:    email
                password_parameter:    password
                default_target_path:   app_home          # redirige vers l'app après login
                always_use_default_target_path: false
                enable_csrf:           true

            # Logout
            logout:
                path:         app_logout
                target:       app_login
                invalidate_session: true

            # Remember me (optionnel, décommentez si besoin)
            # remember_me:
            #     secret:   '%kernel.secret%'
            #     lifetime: 2592000  # 30 jours

            # Vérification compte actif
            user_checker: App\Security\UserChecker

    # ── Contrôle d'accès ───────────────────────────────────────────────────
    access_control:

        # Page de login accessible à tous
        - { path: ^/login,  roles: PUBLIC_ACCESS }

        # ⬇ Décommenter cette ligne pour activer l'inscription libre plus tard
        # - { path: ^/register, roles: PUBLIC_ACCESS }

        # Administration réservée aux admins
        - { path: ^/admin,  roles: ROLE_ADMIN }

        # Toutes les routes API et app nécessitent d'être connecté
        - { path: ^/,       roles: ROLE_USER }

    # ── Hiérarchie des rôles ───────────────────────────────────────────────
    role_hierarchy:
        ROLE_ADMIN: ROLE_USER    # un admin a automatiquement ROLE_USER
