diff options
author | provokateurin <kate@provokateurin.de> | 2024-08-27 09:00:09 +0200 |
---|---|---|
committer | provokateurin <kate@provokateurin.de> | 2024-08-27 10:42:47 +0200 |
commit | 12b44844e1dab74706fc9dee55f17d826e533a46 (patch) | |
tree | ecafa5bde5b6f5ea41c6bae94da346bbf80394fa /lib | |
parent | b8ab7b7e556d7bc71597a2ca716652b80174719d (diff) | |
download | nextcloud-server-12b44844e1dab74706fc9dee55f17d826e533a46.tar.gz nextcloud-server-12b44844e1dab74706fc9dee55f17d826e533a46.zip |
fix(Router): Load attribute routes of all apps when not app is specified
Signed-off-by: provokateurin <kate@provokateurin.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/Route/Router.php | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/lib/private/Route/Router.php b/lib/private/Route/Router.php index b04b6a4d21c..646d1d4e6ed 100644 --- a/lib/private/Route/Router.php +++ b/lib/private/Route/Router.php @@ -111,9 +111,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; @@ -125,21 +130,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 ($this->appManager->isEnabledForUser($app)) { + $this->loadAttributeRoutes($app); } } @@ -413,6 +406,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 */ |