8000 [Security} Make remember-me user providers lazy · symfony/symfony@4ba5201 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4ba5201

Browse files
author
Robin Chalas
committed
[Security} Make remember-me user providers lazy
1 parent febff9b commit 4ba5201

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory;
1313

1414
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
15+
use Symfony\Component\DependencyInjection\Argument\IteratorArgument;
1516
use Symfony\Component\DependencyInjection\ChildDefinition;
1617
use Symfony\Component\DependencyInjection\ContainerBuilder;
1718
use Symfony\Component\DependencyInjection\Reference;
@@ -104,7 +105,7 @@ public function create(ContainerBuilder $container, $id, $config, $userProvider,
104105
throw new \RuntimeException('You must configure at least one remember-me aware listener (such as form-login) for each firewall that has remember-me enabled.');
105106
}
106107

107-
$rememberMeServices->replaceArgument(0, array_unique($userProviders));
108+
$rememberMeServices->replaceArgument(0, new IteratorArgument(array_unique($userProviders)));
108109

109110
// remember-me listener
110111
$listenerId = 'security.authentication.listener.rememberme.'.$id;

src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeServices.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,17 @@ abstract class AbstractRememberMeServices implements RememberMeServicesInterface
4747
/**
4848
* @throws \InvalidArgumentException
4949
*/
50-
public function __construct(array $userProviders, string $secret, string $providerKey, array $options = [], LoggerInterface $logger = null)
50+
public function __construct(iterable $userProviders, string $secret, string $providerKey, array $options = [], LoggerInterface $logger = null)
5151
{
5252
if (empty($secret)) {
5353
throw new \InvalidArgumentException('$secret must not be empty.');
5454
}
5555
if (empty($providerKey)) {
5656
throw new \InvalidArgumentException('$providerKey must not be empty.');
5757
}
58+
if (!\is_array($userProviders) && !$userProviders instanceof \Countable) {
59+
$userProviders = iterator_to_array($userProviders, false);
60+
}
5861
if (0 === \count($userProviders)) {
5962
throw new \InvalidArgumentException('You must provide at least one user provider.');
6063
}

0 commit comments

Comments
 (0)
0