diff --git a/composer.json b/composer.json index 6383fca9..1544681a 100644 --- a/composer.json +++ b/composer.json @@ -13,26 +13,35 @@ "prefer-stable": true, "require": { "php": ">=8.1", - "doctrine/doctrine-bundle": "^2.10.0", "makinacorpus/query-builder": "^1.6.1", + "psr/log": "^3.0", "symfony/config": "^6.0|^7.0", - "symfony/console": "^6.0|^7.0", - "symfony/dependency-injection": "^6.0|^7.0", "symfony/filesystem": "^6.0|^7.0", "symfony/finder": "^6.0|^7.0", "symfony/options-resolver": "^6.0|^7.0", - "symfony/password-hasher": "^6.0|^7.0", "symfony/process": "^6.0|^7.0", "symfony/yaml": "^6.0|^7.0" }, "require-dev": { + "doctrine/doctrine-bundle": "^2.10.0", "doctrine/orm": "^2.15|^3.0", "friendsofphp/php-cs-fixer": "^3.34", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^10.4", + "symfony/dependency-injection": "^6.0|^7.0", "symfony/framework-bundle": "^6.0|^7.0", + "symfony/password-hasher": "^6.0|^7.0", "symfony/validator": "^6.3|^7.0" }, + "suggest": { + "doctrine/doctrine-bundle": "For autoconfiguration in Symfony project context", + "symfony/console": "In order to use the standalone CLI tool or Symfony console commands", + "symfony/password-hasher": "In order to use the password hash anonymizer" + }, + "conflict": { + "symfony/console": "<6.0|>=8.0", + "symfony/password-hasher": "<6.0|>=8.0" + }, "autoload": { "psr-4": { "MakinaCorpus\\DbToolsBundle\\" : "src/" diff --git a/src/Anonymization/Anonymizer/Core/PasswordAnonymizer.php b/src/Anonymization/Anonymizer/Core/PasswordAnonymizer.php index 8961b7ac..1a502973 100644 --- a/src/Anonymization/Anonymizer/Core/PasswordAnonymizer.php +++ b/src/Anonymization/Anonymizer/Core/PasswordAnonymizer.php @@ -6,6 +6,7 @@ use MakinaCorpus\DbToolsBundle\Anonymization\Anonymizer\AbstractAnonymizer; use MakinaCorpus\DbToolsBundle\Attribute\AsAnonymizer; +use MakinaCorpus\DbToolsBundle\Error\MissingDependencyException; use MakinaCorpus\QueryBuilder\Query\Update; use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactory; @@ -22,6 +23,8 @@ class PasswordAnonymizer extends AbstractAnonymizer #[\Override] protected function validateOptions(): void { + MissingDependencyException::check('symfony/password-hasher', PasswordHasherFactory::class); + $algorithm = $this->options->getString('algorithm', 'auto'); $this->options->getString('password', 'password'); diff --git a/src/Error/MissingDependencyException.php b/src/Error/MissingDependencyException.php new file mode 100644 index 00000000..305c5e47 --- /dev/null +++ b/src/Error/MissingDependencyException.php @@ -0,0 +1,32 @@ +