diff --git a/src/DependencyInjection/Security/Factory/OAuthAuthenticatorFactory.php b/src/DependencyInjection/Security/Factory/OAuthAuthenticatorFactory.php index 9dc344a58..2451ff73f 100644 --- a/src/DependencyInjection/Security/Factory/OAuthAuthenticatorFactory.php +++ b/src/DependencyInjection/Security/Factory/OAuthAuthenticatorFactory.php @@ -139,15 +139,17 @@ public function getFirewallNames(): ArrayIterator protected function createAuthenticationFailureHandler(ContainerBuilder $container, string $id, array $config): string { $id = $this->getFailureHandlerId($id); - if ($container->has($id)) { - return $id; - } - $options = array_intersect_key($config, $this->defaultFailureHandlerOptions); - $failureHandler = $container->setDefinition($id, new ChildDefinition('security.authentication.custom_failure_handler')); - $failureHandler->replaceArgument(0, new ChildDefinition('hwi_oauth.authentication.failure_handler')); - $failureHandler->replaceArgument(1, $options); + if (isset($config['failure_handler'])) { + $failureHandler = $container->setDefinition($id, new ChildDefinition('security.authentication.custom_failure_handler')); + $failureHandler->replaceArgument(0, new ChildDefinition($config['failure_handler'])); + $failureHandler->replaceArgument(1, $options); + } else { + $failureHandler = $container->setDefinition($id, new ChildDefinition('security.authentication.custom_failure_handler')); + $failureHandler->replaceArgument(0, new ChildDefinition('hwi_oauth.authentication.failure_handler')); + $failureHandler->replaceArgument(1, $options); + } return $id; }