custom/plugins/SwagPlatformSecurity/src/Fixes/NEXT39918/RegisterPasswordLengthFix.php line 29

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Swag\Security\Fixes\NEXT39918;
  3. use Shopware\Core\Checkout\Customer\SalesChannel\AccountService;
  4. use Shopware\Core\Framework\Validation\BuildValidationEvent;
  5. use Swag\Security\Components\AbstractSecurityFix;
  6. use Symfony\Component\DependencyInjection\ContainerBuilder;
  7. use Symfony\Component\PasswordHasher\PasswordHasherInterface;
  8. use Symfony\Component\Validator\Constraints\Length;
  9. class RegisterPasswordLengthFix extends AbstractSecurityFix
  10. {
  11.     public static function getTicket(): string
  12.     {
  13.         return 'NEXT-39918';
  14.     }
  15.     public static function getMinVersion(): string
  16.     {
  17.         return '6.1.0';
  18.     }
  19.     public static function getMaxVersion(): ?string
  20.     {
  21.         return '6.6.10.2';
  22.     }
  23.     public function onBuildValidation(BuildValidationEvent $event): void
  24.     {
  25.         $definition $event->getDefinition();
  26.         $properties $definition->getProperties();
  27.         if (!\array_key_exists('password'$properties)) {
  28.             return;
  29.         }
  30.         foreach ($properties['password'] as $constraint) {
  31.             if (!$constraint instanceof Length) {
  32.                 continue;
  33.             }
  34.             $constraint->max PasswordHasherInterface::MAX_PASSWORD_LENGTH;
  35.             $constraint->maxMessage 'VIOLATION::PASSWORD_IS_TOO_LONG';
  36.         }
  37.     }
  38.     public static function buildContainer(ContainerBuilder $container): void
  39.     {
  40.         $container->getDefinition(AccountService::class)->setClass(PatchedAccountService::class);
  41.     }
  42. }