From 7704f99c7bc6725938af75a3381130dd7d0374a3 Mon Sep 17 00:00:00 2001 From: Jordi Sala Morales Date: Thu, 3 Feb 2022 08:44:57 +0100 Subject: [PATCH] Avoid using container parameters as much as possible --- .../SonataUserExtension.php | 59 +++++++++---------- src/Resources/config/actions.php | 6 +- src/Resources/config/admin_mongodb.php | 7 +-- src/Resources/config/admin_orm.php | 5 +- src/Resources/config/mailer.php | 4 +- 5 files changed, 39 insertions(+), 42 deletions(-) diff --git a/src/DependencyInjection/SonataUserExtension.php b/src/DependencyInjection/SonataUserExtension.php index 9ee44e020..20e3b8788 100644 --- a/src/DependencyInjection/SonataUserExtension.php +++ b/src/DependencyInjection/SonataUserExtension.php @@ -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 $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 $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 $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 $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 $config + */ + private function configureDefaultAvatar(array $config, ContainerBuilder $container): void + { + $container->getDefinition('sonata.user.twig.global') + ->replaceArgument(1, $config['default_avatar']); + } + /** * @param array $config */ diff --git a/src/Resources/config/actions.php b/src/Resources/config/actions.php index c64140383..af8aadfdb 100644 --- a/src/Resources/config/actions.php +++ b/src/Resources/config/actions.php @@ -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) diff --git a/src/Resources/config/admin_mongodb.php b/src/Resources/config/admin_mongodb.php index 016e137f9..727092665 100644 --- a/src/Resources/config/admin_mongodb.php +++ b/src/Resources/config/admin_mongodb.php @@ -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' => '', ]) ->args([ new ReferenceConfigurator('sonata.user.manager.user'), - ]) - ->call('setTranslationDomain', ['%sonata.user.admin.user.translation_domain%']); + ]); }; diff --git a/src/Resources/config/admin_orm.php b/src/Resources/config/admin_orm.php index a3e4e2c4e..46d5fa55f 100644 --- a/src/Resources/config/admin_orm.php +++ b/src/Resources/config/admin_orm.php @@ -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%']); + ]); }; diff --git a/src/Resources/config/mailer.php b/src/Resources/config/mailer.php index 082708d77..c6a6c6ec3 100644 --- a/src/Resources/config/mailer.php +++ b/src/Resources/config/mailer.php @@ -25,7 +25,7 @@ new ReferenceConfigurator('router'), new ReferenceConfigurator('twig'), new ReferenceConfigurator('mailer'), - '%sonata.user.resetting.email.from_email%', - '%sonata.user.resetting.email.template%', + [], + '', ]); };