vendor/shopware/storefront/Framework/Captcha/HoneypotCaptcha.php line 13

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Shopware\Storefront\Framework\Captcha;
  3. use Shopware\Core\Framework\Feature;
  4. use Shopware\Core\Framework\Log\Package;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Validator\Constraints\Blank;
  7. use Symfony\Component\Validator\Mapping\ClassMetadata;
  8. use Symfony\Component\Validator\Validator\ValidatorInterface;
  9. #[Package('storefront')]
  10. class HoneypotCaptcha extends AbstractCaptcha
  11. {
  12.     public const CAPTCHA_NAME 'honeypot';
  13.     public const CAPTCHA_REQUEST_PARAMETER 'shopware_surname_confirm';
  14.     protected ?string $honeypotValue;
  15.     private ValidatorInterface $validator;
  16.     /**
  17.      * @internal
  18.      */
  19.     public function __construct(ValidatorInterface $validator)
  20.     {
  21.         $this->validator $validator;
  22.     }
  23.     /**
  24.      * Default method for determining constraints when using the Symfony validator.
  25.      */
  26.     public static function loadValidatorMetadata(ClassMetadata $metadata): void
  27.     {
  28.         $metadata->addPropertyConstraint('honeypotValue', new Blank());
  29.     }
  30.     /**
  31.      * {@inheritdoc}
  32.      */
  33.     public function isValid(Request $request/* , array $captchaConfig */): bool
  34.     {
  35.         if (\func_num_args() < || !\is_array(func_get_arg(1))) {
  36.             Feature::triggerDeprecationOrThrow(
  37.                 'v6.5.0.0',
  38.                 'Method `isValid()` in `HoneypotCaptcha` expects passing the `$captchaConfig` as array as the second parameter in v6.5.0.0.'
  39.             );
  40.         }
  41.         $this->honeypotValue $request->get(self::CAPTCHA_REQUEST_PARAMETER'');
  42.         return \count($this->validator->validate($this)) < 1;
  43.     }
  44.     /**
  45.      * {@inheritdoc}
  46.      */
  47.     public function getName(): string
  48.     {
  49.         return self::CAPTCHA_NAME;
  50.     }
  51. }