Aller au contenu

Installation

phil/passwords

Prérequis

PrérequisPourquoi
PHP 8.5 ou plus récentLes classes en lecture seule, les constantes typées, clone() avec des propriétés, Random\Randomizer
ext-mbstringLes mots de passe sont lus par caractères, pas par octets
ext-ctypeLes chiffres des dates et des réponses de la source des fuites
symfony/http-client-contracts 3.6 et un client HTTP, facultatifsPwnedPasswordsSource
symfony/validator 8.2 ou plus récent, facultatifLes contraintes MinimumStrength et NotCompromised

Installer

composer require phil/passwords

C'est une bibliothèque, pas un bundle : il n'y a rien à enregistrer. Construisez l'estimateur, le vérificateur et les générateurs une seule fois et gardez-les. Aucun ne garde d'état entre deux appels : ils conviennent donc à un worker qui sert de nombreuses requêtes.

use Phil\Passwords\Breach\Adapter\PwnedPasswordsSource;
use Phil\Passwords\Breach\BreachChecker;
use Phil\Passwords\Strength\StrengthEstimator;
use Symfony\Component\HttpClient\HttpClient;

$estimator = new StrengthEstimator();                       // the bundled dictionaries and layouts
$checker = new BreachChecker(new PwnedPasswordsSource(HttpClient::create()));

Construire l'estimateur indexe ses dictionnaires, ce qui prend quelques millisecondes : construisez-le une fois par processus, pas une fois par appel.

Dans une application Symfony

Déclarez les services, les validateurs qui les utilisent et les traductions de la bibliothèque :

services:
    Phil\Passwords\Strength\StrengthEstimator: ~

    Phil\Passwords\Breach\Adapter\PwnedPasswordsSource:
        arguments: ['@http_client']

    Phil\Passwords\Breach\BreachChecker:
        arguments: ['@Phil\Passwords\Breach\Adapter\PwnedPasswordsSource']

    Phil\Passwords\Validator\MinimumStrengthValidator:
        arguments: ['@Phil\Passwords\Strength\StrengthEstimator']
        tags: ['validator.constraint_validator']

    Phil\Passwords\Validator\NotCompromisedValidator:
        arguments: ['@Phil\Passwords\Breach\BreachChecker']
        tags: ['validator.constraint_validator']
framework:
    translator:
        paths:
            - '%kernel.project_dir%/vendor/phil/passwords/translations'

Les fichiers de traduction sont des tableaux PHP : phil_passwords.<locale>.php pour la rétroaction, validators.<locale>.php pour les contraintes.