fix(Router): Load attribute routes of all apps when not app is specified

Signed-off-by: provokateurin <kate@provokateurin.de>
pull/47518/head
provokateurin 2024-08-27 09:00:09 +07:00 committed by backportbot[bot]
parent fc9da19b99
commit c0f89e8b5f
1 changed files with 24 additions and 14 deletions

@ -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
*/