Skip to content

Commit 4ce3d92

Browse files
committed
SecurityConfigScriptHandler
1 parent 468ec10 commit 4ce3d92

3 files changed

Lines changed: 56 additions & 0 deletions

File tree

composer.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
],
8585
"update-configuration": [
8686
"PhpList\\Core\\Composer\\ScriptHandler::createGeneralConfiguration",
87+
"PhpList\\BaseDistribution\\Composer\\SecurityConfigScriptHandler::ensureSecurityConfiguration",
8788
"PhpList\\Core\\Composer\\ScriptHandler::createBundleConfiguration",
8889
"PhpList\\Core\\Composer\\ScriptHandler::createRoutesConfiguration",
8990
"PhpList\\Core\\Composer\\ScriptHandler::createParametersConfiguration",
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpList\BaseDistribution\Composer;
6+
7+
use Symfony\Component\Yaml\Yaml;
8+
9+
class SecurityConfigScriptHandler
10+
{
11+
private const GENERATED_FILE_NOTICE = '# This file is autogenerated. Please do not edit.';
12+
13+
public static function ensureSecurityConfiguration(): void
14+
{
15+
$configurationFilePath = dirname(__DIR__, 2) . '/config/config_modules.yml';
16+
if (!is_readable($configurationFilePath)) {
17+
return;
18+
}
19+
20+
$configuration = Yaml::parse(file_get_contents($configurationFilePath));
21+
if (!is_array($configuration)) {
22+
$configuration = [];
23+
}
24+
25+
if (!isset($configuration['security']) || !is_array($configuration['security'])) {
26+
$configuration['security'] = [];
27+
}
28+
29+
if (!isset($configuration['security']['firewalls']) || !is_array($configuration['security']['firewalls'])) {
30+
$configuration['security']['firewalls'] = [];
31+
}
32+
33+
if (!isset($configuration['security']['firewalls']['dev']) || !is_array($configuration['security']['firewalls']['dev'])) {
34+
$configuration['security']['firewalls']['dev'] = [];
35+
}
36+
37+
if (!array_key_exists('pattern', $configuration['security']['firewalls']['dev'])) {
38+
$configuration['security']['firewalls']['dev']['pattern'] = '^/';
39+
}
40+
41+
if (!array_key_exists('security', $configuration['security']['firewalls']['dev'])) {
42+
$configuration['security']['firewalls']['dev']['security'] = false;
43+
}
44+
45+
$content = self::GENERATED_FILE_NOTICE . PHP_EOL . Yaml::dump($configuration);
46+
file_put_contents($configurationFilePath, $content);
47+
}
48+
}

tests/Integration/Composer/ScriptsTest.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,11 @@ public function testModulesConfigurationFileExists()
124124
{
125125
self::assertFileExists(dirname(__DIR__, 3) . '/config/config_modules.yml');
126126
}
127+
128+
public function testModulesConfigurationFileContainsSecurityConfiguration()
129+
{
130+
$fileContents = file_get_contents(dirname(__DIR__, 3) . '/config/config_modules.yml');
131+
132+
self::assertStringContainsString('security:', $fileContents);
133+
}
127134
}

0 commit comments

Comments
 (0)