diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index c8c6f74050094..4c8284c350351 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -132,7 +132,7 @@ use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface; use Symfony\Component\PropertyInfo\PropertyWriteInfoExtractorInterface; use Symfony\Component\RateLimiter\LimiterInterface; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\RateLimiter\Storage\CacheStorage; use Symfony\Component\Routing\Loader\AnnotationDirectoryLoader; use Symfony\Component\Routing\Loader\AnnotationFileLoader; @@ -2280,7 +2280,7 @@ public static function registerRateLimiter(ContainerBuilder $container, string $ $limiterConfig['id'] = $name; $limiter->replaceArgument(0, $limiterConfig); - $container->registerAliasForArgument($limiterId, RateLimiter::class, $name.'.limiter'); + $container->registerAliasForArgument($limiterId, RateLimiterFactory::class, $name.'.limiter'); } private function resolveTrustedHeaders(array $headers): int diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/rate_limiter.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/rate_limiter.php index e9677ae962140..39f92323f09a5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/rate_limiter.php +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/rate_limiter.php @@ -11,7 +11,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; return static function (ContainerConfigurator $container) { $container->services() @@ -19,7 +19,7 @@ ->parent('cache.app') ->tag('cache.pool') - ->set('limiter', RateLimiter::class) + ->set('limiter', RateLimiterFactory::class) ->abstract() ->args([ abstract_arg('config'), diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginThrottlingFactory.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginThrottlingFactory.php index 5e08a445c9e15..31e3e35716df8 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginThrottlingFactory.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/LoginThrottlingFactory.php @@ -18,7 +18,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\Security\Http\EventListener\LoginThrottlingListener; use Symfony\Component\Security\Http\RateLimiter\DefaultLoginRateLimiter; @@ -63,7 +63,7 @@ public function createAuthenticator(ContainerBuilder $container, string $firewal throw new \LogicException('Login throttling requires symfony/security-http:^5.2.'); } - if (!class_exists(RateLimiter::class)) { + if (!class_exists(RateLimiterFactory::class)) { throw new \LogicException('Login throttling requires symfony/rate-limiter to be installed and enabled.'); } diff --git a/src/Symfony/Component/RateLimiter/README.md b/src/Symfony/Component/RateLimiter/README.md index 18e91b9e09f47..72fe4adf277f9 100644 --- a/src/Symfony/Component/RateLimiter/README.md +++ b/src/Symfony/Component/RateLimiter/README.md @@ -18,11 +18,11 @@ $ composer require symfony/rate-limiter ```php use Symfony\Component\RateLimiter\Storage\InMemoryStorage; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; -$limiter = new RateLimiter([ +$limiter = new RateLimiterFactory([ 'id' => 'login', - 'strategy' => 'token_bucket', // or 'fixed_window' + 'strategy' => 'token_bucket', 'limit' => 10, 'rate' => ['interval' => '15 minutes'], ], new InMemoryStorage()); diff --git a/src/Symfony/Component/RateLimiter/RateLimiter.php b/src/Symfony/Component/RateLimiter/RateLimiterFactory.php similarity index 99% rename from src/Symfony/Component/RateLimiter/RateLimiter.php rename to src/Symfony/Component/RateLimiter/RateLimiterFactory.php index e7a177883ebc9..411b85d37502f 100644 --- a/src/Symfony/Component/RateLimiter/RateLimiter.php +++ b/src/Symfony/Component/RateLimiter/RateLimiterFactory.php @@ -22,7 +22,7 @@ * * @experimental in 5.2 */ -final class RateLimiter +final class RateLimiterFactory { private $config; private $storage; diff --git a/src/Symfony/Component/RateLimiter/Tests/LimiterTest.php b/src/Symfony/Component/RateLimiter/Tests/LimiterTest.php index c464e1a7e27c3..1cee3fd32a823 100644 --- a/src/Symfony/Component/RateLimiter/Tests/LimiterTest.php +++ b/src/Symfony/Component/RateLimiter/Tests/LimiterTest.php @@ -14,7 +14,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\Lock\LockFactory; use Symfony\Component\RateLimiter\FixedWindowLimiter; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\RateLimiter\Storage\StorageInterface; use Symfony\Component\RateLimiter\TokenBucketLimiter; @@ -61,6 +61,6 @@ public function testWrongInterval() private function createFactory(array $options) { - return new RateLimiter($options, $this->createMock(StorageInterface::class), $this->createMock(LockFactory::class)); + return new RateLimiterFactory($options, $this->createMock(StorageInterface::class), $this->createMock(LockFactory::class)); } } diff --git a/src/Symfony/Component/RateLimiter/Tests/RateLimiterTest.php b/src/Symfony/Component/RateLimiter/Tests/RateLimiterFactoryTest.php similarity index 89% rename from src/Symfony/Component/RateLimiter/Tests/RateLimiterTest.php rename to src/Symfony/Component/RateLimiter/Tests/RateLimiterFactoryTest.php index 0c84ce33a9d38..9b3faa887996c 100644 --- a/src/Symfony/Component/RateLimiter/Tests/RateLimiterTest.php +++ b/src/Symfony/Component/RateLimiter/Tests/RateLimiterFactoryTest.php @@ -15,19 +15,19 @@ use Symfony\Component\OptionsResolver\Exception\MissingOptionsException; use Symfony\Component\RateLimiter\FixedWindowLimiter; use Symfony\Component\RateLimiter\NoLimiter; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\RateLimiter\SlidingWindowLimiter; use Symfony\Component\RateLimiter\Storage\InMemoryStorage; use Symfony\Component\RateLimiter\TokenBucketLimiter; -class RateLimiterTest extends TestCase +class RateLimiterFactoryTest extends TestCase { /** * @dataProvider validConfigProvider */ public function testValidConfig(string $expectedClass, array $config) { - $factory = new RateLimiter($config, new InMemoryStorage()); + $factory = new RateLimiterFactory($config, new InMemoryStorage()); $rateLimiter = $factory->create('key'); $this->assertInstanceOf($expectedClass, $rateLimiter); } @@ -66,7 +66,7 @@ public function validConfigProvider() public function testInvalidConfig(string $exceptionClass, array $config) { $this->expectException($exceptionClass); - $factory = new RateLimiter($config, new InMemoryStorage()); + $factory = new RateLimiterFactory($config, new InMemoryStorage()); $factory->create('key'); } diff --git a/src/Symfony/Component/Security/Http/RateLimiter/DefaultLoginRateLimiter.php b/src/Symfony/Component/Security/Http/RateLimiter/DefaultLoginRateLimiter.php index f5b69674e78c6..5a63559f677f7 100644 --- a/src/Symfony/Component/Security/Http/RateLimiter/DefaultLoginRateLimiter.php +++ b/src/Symfony/Component/Security/Http/RateLimiter/DefaultLoginRateLimiter.php @@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\RateLimiter\AbstractRequestRateLimiter; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\Security\Core\Security; /** @@ -28,20 +28,20 @@ */ final class DefaultLoginRateLimiter extends AbstractRequestRateLimiter { - private $globalLimiter; - private $localLimiter; + private $globalFactory; + private $localFactory; - public function __construct(RateLimiter $globalLimiter, RateLimiter $localLimiter) + public function __construct(RateLimiterFactory $globalFactory, RateLimiterFactory $localFactory) { - $this->globalLimiter = $globalLimiter; - $this->localLimiter = $localLimiter; + $this->globalFactory = $globalFactory; + $this->localFactory = $localFactory; } protected function getLimiters(Request $request): array { return [ - $this->globalLimiter->create($request->getClientIp()), - $this->localLimiter->create($request->attributes->get(Security::LAST_USERNAME).$request->getClientIp()), + $this->globalFactory->create($request->getClientIp()), + $this->localFactory->create($request->attributes->get(Security::LAST_USERNAME).$request->getClientIp()), ]; } } diff --git a/src/Symfony/Component/Security/Http/Tests/EventListener/LoginThrottlingListenerTest.php b/src/Symfony/Component/Security/Http/Tests/EventListener/LoginThrottlingListenerTest.php index 4425afa8b058d..b19dbb9c58d52 100644 --- a/src/Symfony/Component/Security/Http/Tests/EventListener/LoginThrottlingListenerTest.php +++ b/src/Symfony/Component/Security/Http/Tests/EventListener/LoginThrottlingListenerTest.php @@ -14,7 +14,7 @@ use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\RequestStack; -use Symfony\Component\RateLimiter\RateLimiter; +use Symfony\Component\RateLimiter\RateLimiterFactory; use Symfony\Component\RateLimiter\Storage\InMemoryStorage; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\TooManyLoginAttemptsAuthenticationException; @@ -35,13 +35,13 @@ protected function setUp(): void { $this->requestStack = new RequestStack(); - $localLimiter = new RateLimiter([ + $localLimiter = new RateLimiterFactory([ 'id' => 'login', 'strategy' => 'fixed_window', 'limit' => 3, 'interval' => '1 minute', ], new InMemoryStorage()); - $globalLimiter = new RateLimiter([ + $globalLimiter = new RateLimiterFactory([ 'id' => 'login', 'strategy' => 'fixed_window', 'limit' => 6,