diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..f0ab119 --- /dev/null +++ b/config/services.php @@ -0,0 +1,33 @@ +services(); + + // sensible defaults + $services->defaults() + ->autowire() + ->autoconfigure() + ->private(); + + // The service that the compiler pass will inspect and modify. + // RequestMethodPass expects this service id and will replace argument index 1. + $services->set('beelab_recaptcha2.google_recaptcha', \Beelab\Recaptcha2Bundle\Recaptcha\RecaptchaVerifier::class) + ->args([ + '%beelab_recaptcha2.secret%', // constructor arg 0 (the secret) + null, // constructor arg 1 (placeholder: replaced by RequestMethodPass) + ]); + + // Validator service must match the string returned by Recaptcha2::validatedBy() + // Recaptcha2::validatedBy() returns 'recaptcha2' so we register the service id 'recaptcha2'. + $services->set('recaptcha2', \Beelab\Recaptcha2Bundle\Validator\Constraints\Recaptcha2Validator::class) + ->args([service('beelab_recaptcha2.google_recaptcha')]) + ->tag('validator.constraint_validator'); + + // Form type + $services->set(\Beelab\Recaptcha2Bundle\Form\Type\RecaptchaType::class) + ->tag('form.type'); +}; diff --git a/src/DependencyInjection/BeelabRecaptcha2Extension.php b/src/DependencyInjection/BeelabRecaptcha2Extension.php index 7f7d1ee..2115ba8 100644 --- a/src/DependencyInjection/BeelabRecaptcha2Extension.php +++ b/src/DependencyInjection/BeelabRecaptcha2Extension.php @@ -8,7 +8,7 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; -use Symfony\Component\DependencyInjection\Loader; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; final class BeelabRecaptcha2Extension extends Extension { @@ -23,8 +23,8 @@ public function load(array $configs, ContainerBuilder $container): void $requestMethodClass = $this->getRequestMethod($config['request_method']); $container->setParameter('beelab_recaptcha2.request_method', $requestMethodClass); - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../../config')); - $loader->load('services.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../config')); + $loader->load('services.php'); } private function getRequestMethod(string $requestMethod): string