Aller au contenu

Configuration

phil/bot-detection-bundle

Le bundle n'a pas encore de configuration

PhilBotDetectionBundle étend AbstractBundle de Symfony, fixe l'alias de son extension à phil_bot_detection, et ne redéfinit ni configure() ni loadExtension() :

AspectAujourd'hui
Alias de configurationphil_bot_detection
Clés de configurationAucune. L'arbre de configuration est vide.
Services déclarésAucun. Charger l'extension laisse inchangés les identifiants de service du conteneur (le test du bundle le vérifie).
Paramètres, étiquettes, passes de compilationAucun.
Ressources (script du navigateur)Le contrôleur Stimulus verdict, déclaré dans assets/package.json et trouvé par StimulusBundle (browser-signals.md) ; aucune fonction Twig ni ressource propre.

Les seules formes acceptées sont l'absence de clé, ou une clé vide :

# config/packages/phil_bot_detection.yaml — optional; the tree is empty
phil_bot_detection: ~

Erreurs à la construction

Toute clé sous phil_bot_detection fait échouer la construction du conteneur (Symfony\Component\Config\Definition\Exception\InvalidConfigurationException) :

Unrecognized option "foo" under "phil_bot_detection". Available options are "".

Ce que l'application branche elle-même

L'application enregistre un VerdictHandler par surface qui reçoit un verdict, chacun avec sa politique de friction et son propre compteur. FrictionPolicy se construit par un constructeur nommé : on la crée donc avec une fabrique :

# config/services.yaml (application)
services:
    app.bot.policy.robot_only:
        class: Phil\BotDetectionBundle\Domain\Friction\FrictionPolicy
        factory: ['Phil\BotDetectionBundle\Domain\Friction\FrictionPolicy', 'robotOnly']

    app.bot.policy.robot_or_unknown:
        class: Phil\BotDetectionBundle\Domain\Friction\FrictionPolicy
        factory: ['Phil\BotDetectionBundle\Domain\Friction\FrictionPolicy', 'robotOrUnknown']

    # One counter per surface: increment() takes no argument, so the split is in the wiring
    app.bot.counter.sign_up:
        class: App\Bot\CacheRobotVerdictCounter
        arguments: ['bot.robot_verdicts.sign_up']
    app.bot.counter.payment:
        class: App\Bot\CacheRobotVerdictCounter
        arguments: ['bot.robot_verdicts.payment']

    app.bot.handler.sign_up:
        class: Phil\BotDetectionBundle\Application\VerdictHandler
        arguments: ['@app.bot.policy.robot_or_unknown', '@app.bot.counter.sign_up']
    app.bot.handler.payment:
        class: Phil\BotDetectionBundle\Application\VerdictHandler
        arguments: ['@app.bot.policy.robot_only', '@app.bot.counter.payment']

Les décisions qui reviennent à l'application

DécisionOù elle se prend
Si un verdict absent ou mal formé ajoute de la friction, surface par surfaceFrictionPolicy::robotOnly() ou FrictionPolicy::robotOrUnknown() (friction.md)
Ce que signifie une étape de friction sur chaque surface, et le limiteur qui l'absorbeLe code de l'application qui lit la Friction retournée
L'adaptateur de compteur par surface, sa fenêtre de temps, l'endroit où le compte est rapportéLes adaptateurs de RobotVerdictCounter (extension-points.md)
Le nom du champ de requête qui porte le verdictLe code de l'application qui appelle Verdict::fromSubmitted()
Placer le contrôleur verdict sur les pages et les formulaires de chaque surface, le servir depuis l'origine de l'application et l'inscrire à l'inventaire des scripts de chaque pageL'application (browser-signals.md)
La divulgation dans la politique de confidentialité, et la position juridique sur les signaux du navigateur dans les juridictions desserviesL'application