From 51837616c2dcb9660824a5d20f0f0c2740125e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20FIDRY?= Date: Tue, 2 May 2023 14:49:40 +0200 Subject: [PATCH] fix: Fix the configuration of the extension when DBAL is not configured --- .../LeagueOAuth2ServerExtension.php | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/DependencyInjection/LeagueOAuth2ServerExtension.php b/src/DependencyInjection/LeagueOAuth2ServerExtension.php index edcb8f1..03750dd 100644 --- a/src/DependencyInjection/LeagueOAuth2ServerExtension.php +++ b/src/DependencyInjection/LeagueOAuth2ServerExtension.php @@ -95,6 +95,13 @@ public function getAlias(): string */ public function prepend(ContainerBuilder $container) { + // If no doctrine connection is configured, the DBAL connection should + // be left alone as adding any configuration setting with no connection + // will result in an invalid configuration leading to a hard failure. + if (!self::hasDoctrineConnectionsConfigured($container->getExtensionConfig('doctrine'))) { + return; + } + $container->prependExtensionConfig('doctrine', [ 'dbal' => [ 'connections' => null, @@ -115,6 +122,20 @@ public function process(ContainerBuilder $container) $this->assertRequiredBundlesAreEnabled($container); } + /** + * @param mixed[] $configs + */ + private static function hasDoctrineConnectionsConfigured(array $configs): bool + { + foreach ($configs as $config) { + if (isset($config['dbal'])) { + return true; + } + } + + return false; + } + private function assertRequiredBundlesAreEnabled(ContainerBuilder $container): void { $requiredBundles = [ @@ -254,7 +275,7 @@ private function configurePersistence(LoaderInterface $loader, ContainerBuilder } $persistenceConfig = current($config['persistence']); - $persistenceMethod = key($config['persistence']); + $persistenceMethod = $this->getPersistenceMethod($config); switch ($persistenceMethod) { case 'in_memory': @@ -271,6 +292,16 @@ private function configurePersistence(LoaderInterface $loader, ContainerBuilder } } + /** + * @param mixed[] $config + */ + private function getPersistenceMethod(array $config): ?string + { + $persistenceMethod = key($config['persistence']); + + return \is_string($persistenceMethod) ? $persistenceMethod : null; + } + /** * @param mixed[] $config * @param mixed[] $persistenceConfig