From 351cf892e775db683f5f1c37f5f1b398eb5f5f11 Mon Sep 17 00:00:00 2001 From: provokateurin Date: Tue, 27 Aug 2024 09:00:09 +0200 Subject: [PATCH] fix(Router): Load attribute routes of all apps when not app is specified Signed-off-by: provokateurin --- lib/private/Route/Router.php | 38 +++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php index 91bb733bebb..67ce930ce3e 100644 --- a/lib/private/Route/Router.php +++ b/lib/private/Route/Router.php @@ -140,9 +140,14 @@ class Router implements IRouter { if ($this->loaded) { return; } + $this->eventLogger->start('route:load:' . $requestedApp, 'Loading Routes for ' . $requestedApp); if (is_null($app)) { $this->loaded = true; $routingFiles = $this->getRoutingFiles(); + + foreach (\OC_App::getEnabledApps() as $enabledApp) { + $this->loadAttributeRoutes($enabledApp); + } } else { if (isset($this->loadedApps[$app])) { return; @@ -154,21 +159,9 @@ class Router implements IRouter { } else { $routingFiles = []; } - } - $this->eventLogger->start('route:load:' . $requestedApp, 'Loading Routes for ' . $requestedApp); - - if ($requestedApp !== null && in_array($requestedApp, \OC_App::getEnabledApps())) { - $routes = $this->getAttributeRoutes($requestedApp); - if (count($routes) > 0) { - $this->useCollection($requestedApp); - $this->setupRoutes($routes, $requestedApp); - $collection = $this->getCollection($requestedApp); - $this->root->addCollection($collection); - // Also add the OCS collection - $collection = $this->getCollection($requestedApp . '.ocs'); - $collection->addPrefix('/ocsapp'); - $this->root->addCollection($collection); + if (in_array($app, \OC_App::getEnabledApps())) { + $this->loadAttributeRoutes($app); } } @@ -442,6 +435,23 @@ class Router implements IRouter { return $routeName; } + private function loadAttributeRoutes(string $app): void { + $routes = $this->getAttributeRoutes($app); + if (count($routes) === 0) { + return; + } + + $this->useCollection($app); + $this->setupRoutes($routes, $app); + $collection = $this->getCollection($app); + $this->root->addCollection($collection); + + // Also add the OCS collection + $collection = $this->getCollection($app . '.ocs'); + $collection->addPrefix('/ocsapp'); + $this->root->addCollection($collection); + } + /** * @throws ReflectionException */ -- 2.39.5