aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2025-07-01 11:11:07 +0200
committerCôme Chilliet <come.chilliet@nextcloud.com>2025-07-01 11:11:07 +0200
commitd4fb88fe980ac83362608705dc4cea744007d993 (patch)
tree3a5078c467efd23e8d0877ed655f077b044d307c
parent4232641db5fa66cd6071db5354528e68569012a5 (diff)
downloadnextcloud-server-fix/cleanup-dicontainer.tar.gz
nextcloud-server-fix/cleanup-dicontainer.zip
fix: Tidy up middleware registration code and scope them to application containerfix/cleanup-dicontainer
This make sure that all middlewares get a logger scoped to the application id, among other things. Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
-rw-r--r--lib/private/AppFramework/DependencyInjection/DIContainer.php73
1 files changed, 28 insertions, 45 deletions
diff --git a/lib/private/AppFramework/DependencyInjection/DIContainer.php b/lib/private/AppFramework/DependencyInjection/DIContainer.php
index 04570621131..5ccc1b7d348 100644
--- a/lib/private/AppFramework/DependencyInjection/DIContainer.php
+++ b/lib/private/AppFramework/DependencyInjection/DIContainer.php
@@ -10,15 +10,24 @@ declare(strict_types=1);
namespace OC\AppFramework\DependencyInjection;
-use OC;
use OC\AppFramework\Http;
use OC\AppFramework\Http\Dispatcher;
use OC\AppFramework\Http\Output;
+use OC\AppFramework\Middleware\AdditionalScriptsMiddleware;
+use OC\AppFramework\Middleware\CompressionMiddleware;
use OC\AppFramework\Middleware\FlowV2EphemeralSessionsMiddleware;
use OC\AppFramework\Middleware\MiddlewareDispatcher;
+use OC\AppFramework\Middleware\NotModifiedMiddleware;
use OC\AppFramework\Middleware\OCSMiddleware;
+use OC\AppFramework\Middleware\PublicShare\PublicShareMiddleware;
+use OC\AppFramework\Middleware\Security\BruteForceMiddleware;
use OC\AppFramework\Middleware\Security\CORSMiddleware;
+use OC\AppFramework\Middleware\Security\CSPMiddleware;
+use OC\AppFramework\Middleware\Security\FeaturePolicyMiddleware;
+use OC\AppFramework\Middleware\Security\PasswordConfirmationMiddleware;
use OC\AppFramework\Middleware\Security\RateLimitingMiddleware;
+use OC\AppFramework\Middleware\Security\ReloadExecutionMiddleware;
+use OC\AppFramework\Middleware\Security\SameSiteCookieMiddleware;
use OC\AppFramework\Middleware\Security\SecurityMiddleware;
use OC\AppFramework\Middleware\SessionMiddleware;
use OC\AppFramework\ScopedPsrLogger;
@@ -172,25 +181,12 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$dispatcher = new MiddlewareDispatcher();
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\CompressionMiddleware::class)
- );
-
- $dispatcher->registerMiddleware($c->get(OC\AppFramework\Middleware\NotModifiedMiddleware::class));
-
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\ReloadExecutionMiddleware::class)
- );
-
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\SameSiteCookieMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(CORSMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(OCSMiddleware::class)
- );
+ $dispatcher->registerMiddleware($c->get(CompressionMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(NotModifiedMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(ReloadExecutionMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(SameSiteCookieMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(CORSMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(OCSMiddleware::class));
$dispatcher->registerMiddleware($c->get(FlowV2EphemeralSessionsMiddleware::class));
@@ -211,28 +207,14 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$c->get(IRemoteAddress::class),
);
$dispatcher->registerMiddleware($securityMiddleware);
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\CSPMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\FeaturePolicyMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\PasswordConfirmationMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(TwoFactorMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\Security\BruteForceMiddleware::class)
- );
+ $dispatcher->registerMiddleware($c->get(CSPMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(FeaturePolicyMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(PasswordConfirmationMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(TwoFactorMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(BruteForceMiddleware::class));
$dispatcher->registerMiddleware($c->get(RateLimitingMiddleware::class));
- $dispatcher->registerMiddleware(
- $c->get(OC\AppFramework\Middleware\PublicShare\PublicShareMiddleware::class)
- );
- $dispatcher->registerMiddleware(
- $c->get(\OC\AppFramework\Middleware\AdditionalScriptsMiddleware::class)
- );
+ $dispatcher->registerMiddleware($c->get(PublicShareMiddleware::class));
+ $dispatcher->registerMiddleware($c->get(AdditionalScriptsMiddleware::class));
$coordinator = $c->get(\OC\AppFramework\Bootstrap\Coordinator::class);
$registrationContext = $coordinator->getRegistrationContext();
@@ -249,9 +231,7 @@ class DIContainer extends SimpleContainer implements IAppContainer {
$dispatcher->registerMiddleware($c->get($middleWare));
}
- $dispatcher->registerMiddleware(
- $c->get(SessionMiddleware::class)
- );
+ $dispatcher->registerMiddleware($c->get(SessionMiddleware::class));
return $dispatcher;
});
@@ -369,7 +349,10 @@ class DIContainer extends SimpleContainer implements IAppContainer {
return parent::query($name);
} elseif (str_starts_with($name, \OC\AppFramework\App::buildAppNamespace($this->appName) . '\\')) {
return parent::query($name);
- } elseif (str_starts_with($name, 'OC\\AppFramework\\Services\\')) {
+ } elseif (
+ str_starts_with($name, 'OC\\AppFramework\\Services\\')
+ || str_starts_with($name, 'OC\\AppFramework\\Middleware\\')
+ ) {
/* AppFramework services are scoped to the application */
return parent::query($name);
}