Programming Language PHP
Namespace Oro\Component\DependencyInjection
Class ExtendedContainerBuilder
Total Examples 7
7 code examples of PHP Oro\Component\DependencyInjection\ExtendedContainerBuilder extracted from open source projects
/**
* Moves the specified firewall configuration to the latest position.
*/
public static function makeFirewallLatest(ExtendedContainerBuilder $container, string $firewallName): void
{
$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;
$container->setExtensionConfig('security', $securityConfig);
}
private function configureSecurityFirewalls(ExtendedContainerBuilder $container): void
{
if (!$container->hasParameter('web_backend_prefix')) {
return;
}
$backendPrefix = $container->getParameter('web_backend_prefix');
if (!$backendPrefix) {
return;
}
$updatedConfigs = [];
$configs = $container->getExtensionConfig('security');
foreach ($configs as $config) {
if (isset($config['firewalls']['main']['oauth']['resource_owners'])) {
$oauthResourceOwners = $config['firewalls']['main']['oauth']['resource_owners'];
foreach ($oauthResourceOwners as $name => $path) {
$oauthResourceOwners[$name] = $backendPrefix . $path;
}
$config['firewalls']['main']['oauth']['resource_owners'] = $oauthResourceOwners;
}
$updatedConfigs[] = $config;
}
$container->setExtensionConfig('security', $updatedConfigs);
}
private function configureImagine(ExtendedContainerBuilder $container): void
{
$configs = $this->ensureImagineDefaultConfigSet($container->getExtensionConfig('liip_imagine'));
/**
* add empty config for "default" loader and resolver to each config item to avoid misconfiguration
* @see \Liip\ImagineBundle\DependencyInjection\Configuration::getConfigTreeBuilder
*/
foreach ($configs as $i => $config) {
if (!isset($config['loaders']['default'])) {
$configs[$i]['loaders']['default'] = [];
}
if (!isset($config['resolvers']['default'])) {
$configs[$i]['resolvers']['default'] = [];
}
}
$container->setExtensionConfig('liip_imagine', $configs);
}
private function reconfigureLoginFirewalls(ExtendedContainerBuilder $container): void
{
$securityConfigs = $container->getExtensionConfig('security');
$firewalls = $securityConfigs[0]['firewalls'];
// enable basic authorization for test env
if ('test' === $container->getParameter('kernel.environment')) {
$firewalls['oauth2_authorization_authenticate']['organization-http-basic'] = [
'realm' => 'AccountUser REST Area',
];
}
if (class_exists('Oro\Bundle\CustomerBundle\OroCustomerBundle')) {
// move backend firewalls
foreach (['oauth2_authorization_login', 'oauth2_authorization_authenticate'] as $firewallName) {
$pattern = $firewalls[$firewallName]['pattern'];
$firewalls[$firewallName]['pattern'] = str_replace(
'^/',
'^%web_backend_prefix%/',
$pattern
);
}
// add frontend firewalls
$frontendFirewalls = Yaml::parseFile(__DIR__ . '/../Resources/config/frontend_oauth_firewalls.yml');
$firewalls = array_merge($frontendFirewalls, $firewalls);
// enable basic authorization for test env
if ('test' === $container->getParameter('kernel.environment')) {
$firewalls['oauth2_frontend_authorization_authenticate']['organization-http-basic'] = [
'realm' => 'AccountUser REST Area',
];
}
}
$securityConfigs[0]['firewalls'] = $firewalls;
$container->setExtensionConfig('security', $securityConfigs);
}
private function configureSecurityFirewalls(ExtendedContainerBuilder $container): void
{
$oauthFirewalls = [];
$configs = $container->getExtensionConfig($this->getAlias());
foreach ($configs as $config) {
if (!empty($config['resource_server']['oauth_firewalls'])
&& is_array($config['resource_server']['oauth_firewalls'])
) {
$oauthFirewalls[] = $config['resource_server']['oauth_firewalls'];
}
}
$oauthFirewalls = array_unique(array_merge(...$oauthFirewalls));
$securityConfigs = $container->getExtensionConfig('security');
foreach ($oauthFirewalls as $firewallName) {
if (!empty($securityConfigs[0]['firewalls'][$firewallName])) {
$config = [];
if (!empty($securityConfigs[0]['firewalls'][$firewallName]['anonymous_customer_user'])) {
$config['anonymous_customer_user'] = true;
}
$securityConfigs[0]['firewalls'][$firewallName]['oauth2'] = $config;
}
}
$container->setExtensionConfig('security', $securityConfigs);
}
private function modifyFosRestConfig(ExtendedContainerBuilder $container): void
{
$configs = $container->getExtensionConfig('fos_rest');
$oldRestApiPattern = '^/api/rest';
$restApiPatternPlaceholder = '%' . OroApiExtension::REST_API_PATTERN_PARAMETER_NAME . '%';
foreach ($configs as $configKey => $config) {
if (!isset($config['format_listener']['rules']) || !\is_array($config['format_listener']['rules'])) {
continue;
}
$newRules = [];
foreach ($config['format_listener']['rules'] as $rule) {
if (empty($rule['path'])) {
continue;
}
if ($rule['path'] === $oldRestApiPattern) {
$backendRule = $rule;
$backendRule['path'] = sprintf('^/%s/api/rest', $this->getBackendPrefix($container));
$newRules[] = $backendRule;
} elseif ($rule['path'] === $restApiPatternPlaceholder) {
$backendRule = $rule;
$backendRule['path'] = $this->getBackendApiPattern($container);
$newRules[] = $backendRule;
}
}
if ($newRules) {
$configs[$configKey]['format_listener']['rules'] = array_merge(
$newRules,
$config['format_listener']['rules']
);
}
}
$container->setExtensionConfig('fos_rest', $configs);
}
private function modifySecurityConfig(ExtendedContainerBuilder $container): void
{
$configs = $container->getExtensionConfig('security');
$restApiPatternPlaceholder = '%' . OroApiExtension::REST_API_PATTERN_PARAMETER_NAME . '%';
foreach ($configs as $configKey => $config) {
if (isset($config['firewalls']) && \is_array($config['firewalls'])) {
foreach ($config['firewalls'] as $key => $firewall) {
if (!empty($firewall['pattern'])
&& $firewall['pattern'] === $restApiPatternPlaceholder
&& !str_starts_with($key, 'frontend_')
) {
// add backend prefix to the pattern of the backend REST API firewall
$configs[$configKey]['firewalls'][$key]['pattern'] = $this->getBackendApiPattern($container);
}
}
}
}
$container->setExtensionConfig('security', $configs);
}