Skip to content

Commit

Permalink
Avoid using container parameters as much as possible
Browse files Browse the repository at this point in the history
  • Loading branch information
jordisala1991 committed Feb 3, 2022
1 parent fd93b90 commit 7704f99
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 42 deletions.
59 changes: 29 additions & 30 deletions src/DependencyInjection/SonataUserExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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']);
}

/**
Expand Down Expand Up @@ -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
*/
Expand Down
6 changes: 3 additions & 3 deletions src/Resources/config/actions.php
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand Down
7 changes: 3 additions & 4 deletions src/Resources/config/admin_mongodb.php
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Up @@ -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%',
Expand All @@ -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
Expand Up @@ -25,7 +25,7 @@
new ReferenceConfigurator('router'),
new ReferenceConfigurator('twig'),
new ReferenceConfigurator('mailer'),
'%sonata.user.resetting.email.from_email%',
'%sonata.user.resetting.email.template%',
[],
'',
]);
};

0 comments on commit 7704f99

Please sign in to comment.