From 234ce5f956bd9208a3f5806df758d7cb03e1ecdc Mon Sep 17 00:00:00 2001 From: Christoph Reiter <reiter.christoph@gmail.com> Date: Wed, 21 Jul 2021 11:18:07 +0200 Subject: [PATCH] Inject a dbp_api.twig_globals parameter which the core bundle can use We still depend on some keycloak vars in the api docs template, and I'm not sure how to handle this in a separate bundle atm. --- .../DbpKeycloakExtension.php | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/DependencyInjection/DbpKeycloakExtension.php b/src/DependencyInjection/DbpKeycloakExtension.php index ff02908..cd5e56c 100644 --- a/src/DependencyInjection/DbpKeycloakExtension.php +++ b/src/DependencyInjection/DbpKeycloakExtension.php @@ -7,10 +7,11 @@ namespace DBP\API\KeycloakBundle\DependencyInjection; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension; -class DbpKeycloakExtension extends ConfigurableExtension +class DbpKeycloakExtension extends ConfigurableExtension implements PrependExtensionInterface { public function loadInternal(array $mergedConfig, ContainerBuilder $container) { @@ -25,7 +26,26 @@ class DbpKeycloakExtension extends ConfigurableExtension $certCacheDef->addTag('cache.pool'); $definition = $container->getDefinition('DBP\API\KeycloakBundle\Keycloak\KeycloakBearerUserProvider'); - $definition->addMethodCall('setConfig', [$mergedConfig['keycloak'] ?? []]); + $definition->addMethodCall('setConfig', [$mergedConfig]); $definition->addMethodCall('setCertCache', [$certCacheDef]); } + + public function prepend(ContainerBuilder $container) + { + $config = $container->getExtensionConfig($this->getAlias())[0]; + $this->extendArrayParameter($container, 'dbp_api.twig_globals', [ + 'keycloak_server_url' => $config['server_url'] ?? '', + 'keycloak_realm' => $config['realm'] ?? '', + 'keycloak_frontend_client_id' => $config['frontend_client_id'] ?? '', + ]); + } + + private function extendArrayParameter(ContainerBuilder $container, string $parameter, array $values) + { + if (!$container->hasParameter($parameter)) { + $container->setParameter($parameter, []); + } + $oldValues = $container->getParameter($parameter); + $container->setParameter($parameter, array_merge($oldValues, $values)); + } } -- GitLab