# Rate Limiter Configuration
# Documentation: https://symfony.com/doc/current/rate_limiter.html
#
# Algorithme "Token Bucket" :
# - Chaque requête consomme 1 jeton
# - Les jetons se régénèrent progressivement (rate)
# - Seau vide = HTTP 429 Too Many Requests

framework:
    rate_limiter:
        # ============================================
        # LOGIN - Protection anti brute-force
        # 5 tentatives par minute par IP
        # ============================================
        login:
            policy: 'token_bucket'
            limit: 5
            rate: { interval: '1 minute', amount: 5 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'

        # ============================================
        # REGISTER - Protection anti spam de comptes
        # 3 inscriptions par minute par IP
        # ============================================
        register:
            policy: 'token_bucket'
            limit: 3
            rate: { interval: '1 minute', amount: 3 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'

        # ============================================
        # CHAT - Protection API Mistral (coûteuse)
        # 30 requêtes par minute par utilisateur
        # ============================================
        chat:
            policy: 'token_bucket'
            limit: 30
            rate: { interval: '1 minute', amount: 30 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'

        # ============================================
        # FILE UPLOAD - Protection anti spam fichiers
        # 10 uploads par minute par utilisateur
        # ============================================
        file_upload:
            policy: 'token_bucket'
            limit: 10
            rate: { interval: '1 minute', amount: 10 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'

        # ============================================
        # WEBHOOK STRIPE - Protection endpoint public
        # 100 requêtes par minute par IP
        # ============================================
        stripe_webhook:
            policy: 'token_bucket'
            limit: 100
            rate: { interval: '1 minute', amount: 100 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'

        # ============================================
        # API GLOBAL - Limite globale par utilisateur
        # 200 requêtes par minute (protection DDoS)
        # ============================================
        api_global:
            policy: 'token_bucket'
            limit: 200
            rate: { interval: '1 minute', amount: 200 }
            lock_factory: 'lock.factory'
            cache_pool: 'cache.rate_limiter'
