public function testSetExtensionConfigShouldOverwriteCurrentConfig() { $originalConfig = ['prop' => 'val']; $overwrittenConfig = [['p' => 'v']]; $this->builder->prependExtensionConfig(static::EXTENSION, $originalConfig); $this->assertEquals([$originalConfig], $this->builder->getExtensionConfig(static::EXTENSION)); $this->builder->setExtensionConfig(static::EXTENSION, $overwrittenConfig); $this->assertEquals($overwrittenConfig, $this->builder->getExtensionConfig(static::EXTENSION)); }
/** * Move specified firewall to the latest position, it should be done for the most general firewalls * * @param ExtendedContainerBuilder $container * @param string $firewallName */ public static function makeFirewallLatest(ExtendedContainerBuilder $container, $firewallName) { $securityConfig = $container->getExtensionConfig('security'); if (!isset($securityConfig[0]['firewalls'][$firewallName])) { return; } $mainFirewall = $securityConfig[0]['firewalls'][$firewallName]; unset($securityConfig[0]['firewalls'][$firewallName]); $securityConfig[0]['firewalls'][$firewallName] = $mainFirewall; /** @var ExtendedContainerBuilder $container */ $container->setExtensionConfig('security', $securityConfig); }
public function testSecurityShouldBeMergedCorrectly() { $originalConfig = [['access_decision_manager' => ['strategy' => 'unanimous'], 'firewalls' => ['dev' => ['pattern' => '^/(_(profiler|wdt)|css|images|js)/', 'security' => false], 'main' => ['pattern' => '^/', 'provider' => 'chain_provider', 'organization-form-login' => ['csrf_provider' => 'form.csrf_provider', 'check_path' => 'oro_user_security_check', 'login_path' => 'oro_user_security_login'], 'logout' => ['path' => 'oro_user_security_logout'], 'organization-remember-me' => ['key' => '%secret%', 'name' => 'CRMRM', 'lifetime' => 1209600, 'httponly' => true], 'anonymous' => false]]], ['firewalls' => ['main' => ['organization-http-basic' => ['realm' => 'Secured REST Area'], 'provider' => 'oro_user', 'http-basic' => false, 'organization-form-login' => false, 'logout' => false, 'organization-remember-me' => false, 'anonymous' => true]], 'acl' => ['connection' => 'default']]]; $additionalConfig = ['firewalls' => ['oauth' => ['resource_owners' => ['google' => '/login/check-google']]]]; $expectedConfig = $originalConfig; $expectedConfig[0]['firewalls']['oauth'] = $additionalConfig['firewalls']['oauth']; $containerBuilder = new ExtendedContainerBuilder(); $containerBuilder->setExtensionConfig('security', $originalConfig); $platformExtension = new OroPlatformExtension(); $mergeConfigurationIntoOne = new \ReflectionMethod('Oro\\Bundle\\PlatformBundle\\DependencyInjection\\OroPlatformExtension', 'mergeConfigIntoOne'); $mergeConfigurationIntoOne->setAccessible(true); $mergeConfigurationIntoOne->invoke($platformExtension, $containerBuilder, 'security', $additionalConfig); $this->assertEquals($expectedConfig, $containerBuilder->getExtensionConfig('security')); }
/** * Sets default implementation of the cache for WSSE nonces if a custom implementation is not specified * * @param ExtendedContainerBuilder $container */ protected function setupWsseNonceCache(ExtendedContainerBuilder $container) { $securityConfig = $container->getExtensionConfig('security'); if (isset($securityConfig[0]['firewalls']['wsse_secured']) && !isset($securityConfig[0]['firewalls']['wsse_secured']['wsse']['nonce_cache_service_id'])) { $securityConfig[0]['firewalls']['wsse_secured']['wsse']['nonce_cache_service_id'] = self::DEFAULT_WSSE_NONCE_CACHE_SERVICE_ID; $container->setExtensionConfig('security', $securityConfig); if (!$container->hasDefinition(self::DEFAULT_WSSE_NONCE_CACHE_SERVICE_ID)) { $wsseLifetime = 0; if (isset($securityConfig[0]['firewalls']['wsse_secured']['wsse']['lifetime'])) { $wsseLifetime = $securityConfig[0]['firewalls']['wsse_secured']['wsse']['lifetime']; } $cacheServiceDef = new Definition(self::DEFAULT_WSSE_NONCE_CACHE_CLASS, [self::DEFAULT_WSSE_NONCE_CACHE_PATH]); if ($wsseLifetime) { $cacheServiceDef->addMethodCall('setNonceLifeTime', [$wsseLifetime]); } $container->setDefinition(self::DEFAULT_WSSE_NONCE_CACHE_SERVICE_ID, $cacheServiceDef); } } }