Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid using container parameters as much as possible #1490

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 29 additions & 30 deletions src/DependencyInjection/SonataUserExtension.php
Original file line number Diff line number Diff line change
@@ -69,15 +69,11 @@ public function load(array $configs, ContainerBuilder $container): void

$this->checkManagerTypeToModelTypesMapping($config);

$this->configureAdminClass($config, $container);
$this->configureClass($config, $container);

$this->configureTranslationDomain($config, $container);
$this->configureController($config, $container);
$this->configureAdmin($config['admin'], $container);
$this->configureMailer($config, $container);
$this->configureResetting($container, $config);

$container->setParameter('sonata.user.default_avatar', $config['profile']['default_avatar']);
$this->configureResetting($config['resetting'], $container);
$this->configureDefaultAvatar($config['profile'], $container);

if ($this->isConfigEnabled($container, $config['impersonating'])) {
$this->configureImpersonation($config['impersonating'], $container);
@@ -95,38 +91,32 @@ private function configureClass(array $config, ContainerBuilder $container): voi
/**
* @param array<string, mixed> $config
*/
private function configureAdminClass(array $config, ContainerBuilder $container): void
private function configureAdmin(array $config, ContainerBuilder $container): void
{
$container->setParameter('sonata.user.admin.user.class', $config['admin']['user']['class']);
}
$container->setParameter('sonata.user.admin.user.controller', $config['user']['controller']);

/**
* @param array<string, mixed> $config
*/
private function configureTranslationDomain(array $config, ContainerBuilder $container): void
{
$container->setParameter('sonata.user.admin.user.translation_domain', $config['admin']['user']['translation']);
$container->getDefinition('sonata.user.admin.user')
->setClass($config['user']['class'])
->addMethodCall('setTranslationDomain', [$config['user']['translation']]);
}

/**
* @param array<string, mixed> $config
*/
private function configureController(array $config, ContainerBuilder $container): void
private function configureResetting(array $config, ContainerBuilder $container): void
{
$container->setParameter('sonata.user.admin.user.controller', $config['admin']['user']['controller']);
}
$container->getDefinition('sonata.user.action.request')
->replaceArgument(9, $config['retry_ttl']);

/**
* @param array<string, mixed> $config
*/
private function configureResetting(ContainerBuilder $container, array $config): void
{
$container->setParameter('sonata.user.resetting.retry_ttl', $config['resetting']['retry_ttl']);
$container->setParameter('sonata.user.resetting.token_ttl', $config['resetting']['token_ttl']);
$container->setParameter('sonata.user.resetting.email.from_email', [
$config['resetting']['email']['address'] => $config['resetting']['email']['sender_name'],
]);
$container->setParameter('sonata.user.resetting.email.template', $config['resetting']['email']['template']);
$container->getDefinition('sonata.user.action.check_email')
->replaceArgument(4, $config['token_ttl']);

$container->getDefinition('sonata.user.action.reset')
->replaceArgument(8, $config['token_ttl']);

$container->getDefinition('sonata.user.mailer.default')
->replaceArgument(3, [$config['email']['address'] => $config['email']['sender_name']])
->replaceArgument(4, $config['email']['template']);
}

/**
@@ -177,6 +167,15 @@ private function configureMailer(array $config, ContainerBuilder $container): vo
$container->setAlias('sonata.user.mailer', $config['mailer']);
}

/**
* @param array<string, mixed> $config
*/
private function configureDefaultAvatar(array $config, ContainerBuilder $container): void
{
$container->getDefinition('sonata.user.twig.global')
->replaceArgument(1, $config['default_avatar']);
}

/**
* @param array<string, mixed> $config
*/
6 changes: 3 additions & 3 deletions src/Resources/config/actions.php
Original file line number Diff line number Diff line change
@@ -37,7 +37,7 @@
new ReferenceConfigurator('sonata.user.manager.user'),
new ReferenceConfigurator('sonata.user.mailer'),
new ReferenceConfigurator('sonata.user.util.token_generator'),
'%sonata.user.resetting.retry_ttl%',
0,
])

->set('sonata.user.action.check_email', CheckEmailAction::class)
@@ -47,7 +47,7 @@
new ReferenceConfigurator('router'),
new ReferenceConfigurator('sonata.admin.pool'),
new ReferenceConfigurator('sonata.admin.global_template_registry'),
'%sonata.user.resetting.token_ttl%',
0,
])

->set('sonata.user.action.reset', ResetAction::class)
@@ -61,7 +61,7 @@
new ReferenceConfigurator('form.factory'),
new ReferenceConfigurator('sonata.user.manager.user'),
new ReferenceConfigurator('translator'),
'%sonata.user.resetting.token_ttl%',
0,
])

->set('sonata.user.action.login', LoginAction::class)
7 changes: 3 additions & 4 deletions src/Resources/config/admin_mongodb.php
Original file line number Diff line number Diff line change
@@ -18,19 +18,18 @@
// Use "param" function for creating references to parameters when dropping support for Symfony 5.1
$containerConfigurator->services()

->set('sonata.user.admin.user', '%sonata.user.admin.user.class%')
->set('sonata.user.admin.user')
->tag('sonata.admin', [
'model_class' => '%sonata.user.user.class%',
'controller' => '%sonata.user.admin.user.controller%',
'label_catalogue' => 'SonataUserBundle',
'manager_type' => 'doctrine_mongodb',
'group' => 'sonata_user',
'label' => 'users',
'label_catalogue' => 'SonataUserBundle',
'label_translator_strategy' => 'sonata.admin.label.strategy.underscore',
'icon' => '<i class=\'fa fa-users\'></i>',
])
->args([
new ReferenceConfigurator('sonata.user.manager.user'),
])
->call('setTranslationDomain', ['%sonata.user.admin.user.translation_domain%']);
]);
};
5 changes: 2 additions & 3 deletions src/Resources/config/admin_orm.php
Original file line number Diff line number Diff line change
@@ -18,7 +18,7 @@
// Use "param" function for creating references to parameters when dropping support for Symfony 5.1
$containerConfigurator->services()

->set('sonata.user.admin.user', '%sonata.user.admin.user.class%')
->set('sonata.user.admin.user')
->tag('sonata.admin', [
'model_class' => '%sonata.user.user.class%',
'controller' => '%sonata.user.admin.user.controller%',
@@ -31,6 +31,5 @@
])
->args([
new ReferenceConfigurator('sonata.user.manager.user'),
])
->call('setTranslationDomain', ['%sonata.user.admin.user.translation_domain%']);
]);
};
4 changes: 2 additions & 2 deletions src/Resources/config/mailer.php
Original file line number Diff line number Diff line change
@@ -25,7 +25,7 @@
new ReferenceConfigurator('router'),
new ReferenceConfigurator('twig'),
new ReferenceConfigurator('mailer'),
'%sonata.user.resetting.email.from_email%',
'%sonata.user.resetting.email.template%',
[],
'',
]);
};