diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php index 6853bcf712df0..7a36ffd90f6fc 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php @@ -12,6 +12,7 @@ namespace Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory; use Symfony\Component\Config\Definition\Builder\NodeDefinition; +use Symfony\Component\DependencyInjection\Argument\IteratorArgument; use Symfony\Component\DependencyInjection\ChildDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; @@ -104,7 +105,7 @@ public function create(ContainerBuilder $container, string $id, array $config, ? 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.'); } - $rememberMeServices->replaceArgument(0, array_unique($userProviders)); + $rememberMeServices->replaceArgument(0, new IteratorArgument(array_unique($userProviders))); // remember-me listener $listenerId = 'security.authentication.listener.rememberme.'.$id; diff --git a/src/Symfony/Bundle/SecurityBundle/composer.json b/src/Symfony/Bundle/SecurityBundle/composer.json index e67d235e1d8b4..faf4cfd3d057e 100644 --- a/src/Symfony/Bundle/SecurityBundle/composer.json +++ b/src/Symfony/Bundle/SecurityBundle/composer.json @@ -24,7 +24,7 @@ "symfony/security-core": "^4.4|^5.0", "symfony/security-csrf": "^4.4|^5.0", "symfony/security-guard": "^4.4|^5.0", - "symfony/security-http": "^4.4.1|^5.0.1" + "symfony/security-http": "^5.1" }, "require-dev": { "doctrine/doctrine-bundle": "^1.5|^2.0", diff --git a/src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeServices.php b/src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeServices.php index 487f864e9b071..5babe24f7c021 100644 --- a/src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeServices.php +++ b/src/Symfony/Component/Security/Http/RememberMe/AbstractRememberMeServices.php @@ -47,7 +47,7 @@ abstract class AbstractRememberMeServices implements RememberMeServicesInterface /** * @throws \InvalidArgumentException */ - public function __construct(array $userProviders, string $secret, string $providerKey, array $options = [], LoggerInterface $logger = null) + public function __construct(iterable $userProviders, string $secret, string $providerKey, array $options = [], LoggerInterface $logger = null) { if (empty($secret)) { throw new \InvalidArgumentException('$secret must not be empty.'); @@ -55,6 +55,9 @@ public function __construct(array $userProviders, string $secret, string $provid if (empty($providerKey)) { throw new \InvalidArgumentException('$providerKey must not be empty.'); } + if (!\is_array($userProviders) && !$userProviders instanceof \Countable) { + $userProviders = iterator_to_array($userProviders, false); + } if (0 === \count($userProviders)) { throw new \InvalidArgumentException('You must provide at least one user provider.'); }