From 7b14d79927a43f8ee062b5c89c9cbefdb524e831 Mon Sep 17 00:00:00 2001 From: Emiel Nijpels Date: Fri, 16 Mar 2018 12:32:03 +0100 Subject: [PATCH] Security access control rule field "ips" did not split comma-separated IP addresses into an array --- .../DependencyInjection/MainConfiguration.php | 2 +- .../MainConfigurationTest.php | 20 +++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php index 43bd560588fa6..e1698b6b16357 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php @@ -166,7 +166,7 @@ private function addAccessControlSection(ArrayNodeDefinition $rootNode) ->end() ->scalarNode('host')->defaultNull()->end() ->arrayNode('ips') - ->beforeNormalization()->ifString()->then(function ($v) { return array($v); })->end() + ->beforeNormalization()->ifString()->then(function ($v) { return preg_split('/\s*,\s*/', $v); })->end() ->prototype('scalar')->end() ->end() ->arrayNode('methods') diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/MainConfigurationTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/MainConfigurationTest.php index 3aac20301f0f9..99cdaa29dd079 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/MainConfigurationTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/MainConfigurationTest.php @@ -111,4 +111,24 @@ public function testCsrfOriginalAndAliasValueCausesException() $configuration = new MainConfiguration(array(), array()); $processedConfig = $processor->processConfiguration($configuration, array($config)); } + + public function testMultipleIps() + { + $config = array( + 'access_control' => array( + array( + 'path' => '^/internal', + 'role' => 'IS_AUTHENTICATED_ANONYMOUSLY', + 'ips' => '127.0.0.1, ::1', + ), + ), + ); + $config = array_merge(static::$minimalConfig, $config); + + $processor = new Processor(); + $configuration = new MainConfiguration(array(), array()); + $processedConfig = $processor->processConfiguration($configuration, array($config)); + + $this->assertSame(array('127.0.0.1', '::1'), $processedConfig['access_control'][0]['ips']); + } }