Skip to content

Commit 8c6564e

Browse files
[DI] Remove LazyString from 4.4, before adding back to the String component
1 parent 160e2c4 commit 8c6564e

File tree

6 files changed

+9
-69
lines changed

6 files changed

+9
-69
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1473,9 +1473,13 @@ private function registerSecretsConfiguration(array $config, ContainerBuilder $c
14731473
}
14741474

14751475
if ($config['decryption_env_var']) {
1476-
$container->getDefinition('secrets.decryption_key')->replaceArgument(1, $config['decryption_env_var']);
1476+
if (!preg_match('/^(?:\w*+:)*+\w++$/', $config['decryption_env_var'])) {
1477+
throw new InvalidArgumentException(sprintf('Invalid value "%s" set as "decryption_env_var": only "word" characters are allowed.', $config['decryption_env_var']));
1478+
}
1479+
1480+
$container->getDefinition('secrets.vault')->replaceArgument(1, "%env({$config['decryption_env_var']})%");
14771481
} else {
1478-
$container->removeDefinition('secrets.decryption_key');
1482+
$container->getDefinition('secrets.vault')->replaceArgument(1, null);
14791483
}
14801484
}
14811485

Resources/config/secrets.xml

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,7 @@
77
<services>
88
<service id="secrets.vault" class="Symfony\Bundle\FrameworkBundle\Secrets\SodiumVault">
99
<argument>%kernel.project_dir%/config/secrets/%kernel.environment%</argument>
10-
<argument type="service" id="secrets.decryption_key" on-invalid="ignore" />
11-
</service>
12-
13-
<!--
14-
LazyString::fromCallable() is used as a wrapper to lazily read the SYMFONY_DECRYPTION_SECRET var from the env.
15-
By overriding this service and using the same strategy, the decryption key can be fetched lazily from any other service if needed.
16-
-->
17-
<service id="secrets.decryption_key" class="Symfony\Component\DependencyInjection\LazyString">
18-
<factory class="Symfony\Component\DependencyInjection\LazyString" method="fromCallable" />
19-
<argument type="service">
20-
<service class="Closure">
21-
<factory class="Closure" method="fromCallable" />
22-
<argument type="collection">
23-
<argument type="service" id="service_container" />
24-
<argument>getEnv</argument>
25-
</argument>
26-
</service>
27-
</argument>
28-
<argument>base64:default::SYMFONY_DECRYPTION_SECRET</argument>
10+
<argument>%env(base64:default::SYMFONY_DECRYPTION_SECRET)%</argument>
2911
</service>
3012

3113
<service id="secrets.local_vault" class="Symfony\Bundle\FrameworkBundle\Secrets\DotenvVault">

Tests/DependencyInjection/Fixtures/php/cache_env_var.php

Lines changed: 0 additions & 9 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/xml/cache_env_var.xml

Lines changed: 0 additions & 17 deletions
This file was deleted.

Tests/DependencyInjection/Fixtures/yml/cache_env_var.yml

Lines changed: 0 additions & 6 deletions
This file was deleted.

Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
use Symfony\Component\DependencyInjection\ContainerInterface;
3535
use Symfony\Component\DependencyInjection\Definition;
3636
use Symfony\Component\DependencyInjection\Loader\ClosureLoader;
37-
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag;
37+
use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag;
3838
use Symfony\Component\DependencyInjection\Reference;
3939
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
4040
use Symfony\Component\HttpClient\ScopingHttpClient;
@@ -1403,20 +1403,6 @@ public function testCacheDefaultRedisProvider()
14031403
$this->assertSame($redisUrl, $url);
14041404
}
14051405

1406-
public function testCacheDefaultRedisProviderWithEnvVar()
1407-
{
1408-
$container = $this->createContainerFromFile('cache_env_var');
1409-
1410-
$redisUrl = 'redis://paas.com';
1411-
$providerId = '.cache_connection.'.ContainerBuilder::hash($redisUrl);
1412-
1413-
$this->assertTrue($container->hasDefinition($providerId));
1414-
1415-
$url = $container->getDefinition($providerId)->getArgument(0);
1416-
1417-
$this->assertSame($redisUrl, $url);
1418-
}
1419-
14201406
public function testCachePoolServices()
14211407
{
14221408
$container = $this->createContainerFromFile('cache', [], true, false);
@@ -1584,7 +1570,7 @@ public function testMailer(): void
15841570

15851571
protected function createContainer(array $data = [])
15861572
{
1587-
return new ContainerBuilder(new ParameterBag(array_merge([
1573+
return new ContainerBuilder(new EnvPlaceholderParameterBag(array_merge([
15881574
'kernel.bundles' => ['FrameworkBundle' => 'Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle'],
15891575
'kernel.bundles_metadata' => ['FrameworkBundle' => ['namespace' => 'Symfony\\Bundle\\FrameworkBundle', 'path' => __DIR__.'/../..']],
15901576
'kernel.cache_dir' => __DIR__,

0 commit comments

Comments
 (0)