diff options
Diffstat (limited to 'lib/private/AppFramework/DependencyInjection/DIContainer.php')
-rw-r--r-- | lib/private/AppFramework/DependencyInjection/DIContainer.php | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php index 4fb13b09ae0..04747485c13 100644 --- a/lib/private/AppFramework/DependencyInjection/DIContainer.php +++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php @@ -40,6 +40,7 @@ use OC\AppFramework\Http\Output; use OC\AppFramework\Middleware\MiddlewareDispatcher; use OC\AppFramework\Middleware\Security\CORSMiddleware; use OC\AppFramework\Middleware\OCSMiddleware; +use OC\AppFramework\Middleware\Security\RateLimitingMiddleware; use OC\AppFramework\Middleware\Security\SecurityMiddleware; use OC\AppFramework\Middleware\SessionMiddleware; use OC\AppFramework\Utility\SimpleContainer; @@ -169,7 +170,6 @@ class DIContainer extends SimpleContainer implements IAppContainer { ); }); - /** * App Framework APIs */ @@ -224,12 +224,34 @@ class DIContainer extends SimpleContainer implements IAppContainer { $app->isAdminUser(), $server->getContentSecurityPolicyManager(), $server->getCsrfTokenManager(), - $server->getContentSecurityPolicyNonceManager(), - $server->getBruteForceThrottler() + $server->getContentSecurityPolicyNonceManager() ); }); + $this->registerService('BruteForceMiddleware', function($c) use ($app) { + /** @var \OC\Server $server */ + $server = $app->getServer(); + + return new OC\AppFramework\Middleware\Security\BruteForceMiddleware( + $c['ControllerMethodReflector'], + $server->getBruteForceThrottler(), + $server->getRequest() + ); + }); + + $this->registerService('RateLimitingMiddleware', function($c) use ($app) { + /** @var \OC\Server $server */ + $server = $app->getServer(); + + return new RateLimitingMiddleware( + $server->getRequest(), + $server->getUserSession(), + $c['ControllerMethodReflector'], + $c->query(OC\Security\RateLimiting\Limiter::class) + ); + }); + $this->registerService('CORSMiddleware', function($c) { return new CORSMiddleware( $c['Request'], @@ -269,7 +291,9 @@ class DIContainer extends SimpleContainer implements IAppContainer { $dispatcher->registerMiddleware($c['CORSMiddleware']); $dispatcher->registerMiddleware($c['OCSMiddleware']); $dispatcher->registerMiddleware($c['SecurityMiddleware']); - $dispatcher->registerMiddleWare($c['TwoFactorMiddleware']); + $dispatcher->registerMiddleware($c['TwoFactorMiddleware']); + $dispatcher->registerMiddleware($c['BruteForceMiddleware']); + $dispatcher->registerMiddleware($c['RateLimitingMiddleware']); foreach($middleWares as $middleWare) { $dispatcher->registerMiddleware($c[$middleWare]); |