Skip to content

Commit 3c1887e

Browse files
committed
SecurityConfigScriptHandler
1 parent 468ec10 commit 3c1887e

5 files changed

Lines changed: 65 additions & 3 deletions

File tree

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@
4949
"phplist/web-frontend": "dev-feat/campaigns",
5050
"doctrine/orm": "^3.3",
5151
"tatevikgr/rest-api-client": "dev-dev",
52-
"tatevikgr/rss-feed": "dev-main as 0.1.0"
52+
"tatevikgr/rss-feed": "dev-main as 0.1.0",
53+
"nelmio/cors-bundle": "^2.6"
5354
},
5455
"require-dev": {
5556
"phpunit/phpunit": "^9.6.33",
@@ -84,6 +85,7 @@
8485
],
8586
"update-configuration": [
8687
"PhpList\\Core\\Composer\\ScriptHandler::createGeneralConfiguration",
88+
"PhpList\\BaseDistribution\\Composer\\SecurityConfigScriptHandler::ensureSecurityConfiguration",
8789
"PhpList\\Core\\Composer\\ScriptHandler::createBundleConfiguration",
8890
"PhpList\\Core\\Composer\\ScriptHandler::createRoutesConfiguration",
8991
"PhpList\\Core\\Composer\\ScriptHandler::createParametersConfiguration",

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docker-compose.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ services:
2222
depends_on:
2323
- db
2424
volumes:
25-
- .:/var/www/html
2625
- ./var/logs:/var/www/html/var/log
2726
- ./var/cache:/var/www/html/var/cache
2827
networks: [ appnet ]
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
/**
14+
* @SuppressWarnings("CyclomaticComplexity")
15+
* @SuppressWarnings("NPathComplexity")
16+
*/
17+
public static function ensureSecurityConfiguration(): void
18+
{
19+
$configurationFilePath = dirname(__DIR__, 2) . '/config/config_modules.yml';
20+
if (!is_readable($configurationFilePath)) {
21+
return;
22+
}
23+
24+
$configuration = Yaml::parse(file_get_contents($configurationFilePath));
25+
if (!is_array($configuration)) {
26+
$configuration = [];
27+
}
28+
29+
if (!isset($configuration['security']) || !is_array($configuration['security'])) {
30+
$configuration['security'] = [];
31+
}
32+
33+
if (!isset($configuration['security']['firewalls']) || !is_array($configuration['security']['firewalls'])) {
34+
$configuration['security']['firewalls'] = [];
35+
}
36+
37+
if (!isset($configuration['security']['firewalls']['dev'])
38+
|| !is_array($configuration['security']['firewalls']['dev'])
39+
) {
40+
$configuration['security']['firewalls']['dev'] = [];
41+
}
42+
43+
if (!array_key_exists('pattern', $configuration['security']['firewalls']['dev'])) {
44+
$configuration['security']['firewalls']['dev']['pattern'] = '^/';
45+
}
46+
47+
if (!array_key_exists('security', $configuration['security']['firewalls']['dev'])) {
48+
$configuration['security']['firewalls']['dev']['security'] = false;
49+
}
50+
51+
$content = self::GENERATED_FILE_NOTICE . PHP_EOL . Yaml::dump($configuration);
52+
file_put_contents($configurationFilePath, $content);
53+
}
54+
}

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)