mirror of
https://github.com/nextcloud/server.git
synced 2026-04-15 22:11:17 -04:00
fix(URLGenerator): Use NavigationManager to generate default page URL
Signed-off-by: provokateurin <kate@provokateurin.de>
This commit is contained in:
parent
70ed08daf1
commit
01ec6762a2
1 changed files with 19 additions and 6 deletions
|
|
@ -14,6 +14,7 @@ use OCP\App\AppPathNotFoundException;
|
|||
use OCP\App\IAppManager;
|
||||
use OCP\ICacheFactory;
|
||||
use OCP\IConfig;
|
||||
use OCP\INavigationManager;
|
||||
use OCP\IRequest;
|
||||
use OCP\IURLGenerator;
|
||||
use OCP\IUserSession;
|
||||
|
|
@ -36,6 +37,7 @@ class URLGenerator implements IURLGenerator {
|
|||
/** @var null|string */
|
||||
private $baseUrl = null;
|
||||
private ?IAppManager $appManager = null;
|
||||
private ?INavigationManager $navigationManager = null;
|
||||
|
||||
public function __construct(IConfig $config,
|
||||
IUserSession $userSession,
|
||||
|
|
@ -58,6 +60,14 @@ class URLGenerator implements IURLGenerator {
|
|||
return $this->appManager;
|
||||
}
|
||||
|
||||
private function getNavigationManager(): INavigationManager {
|
||||
if ($this->navigationManager !== null) {
|
||||
return $this->navigationManager;
|
||||
}
|
||||
$this->navigationManager = \OCP\Server::get(INavigationManager::class);
|
||||
return $this->navigationManager;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an url using a defined route
|
||||
*
|
||||
|
|
@ -288,14 +298,17 @@ class URLGenerator implements IURLGenerator {
|
|||
return $this->getAbsoluteURL($defaultPage);
|
||||
}
|
||||
|
||||
$appId = $this->getAppManager()->getDefaultAppForUser();
|
||||
|
||||
if ($this->config->getSystemValueBool('htaccess.IgnoreFrontController', false)
|
||||
|| getenv('front_controller_active') === 'true') {
|
||||
return $this->getAbsoluteURL('/apps/' . $appId . '/');
|
||||
$entryId = $this->getNavigationManager()->getDefaultEntryIdForUser();
|
||||
$entry = $this->getNavigationManager()->get($entryId);
|
||||
$href = (string)$entry['href'];
|
||||
if ($href === '') {
|
||||
throw new \InvalidArgumentException('Default navigation entry is missing href: ' . $entryId);
|
||||
}
|
||||
if (str_starts_with($href, '/index.php/') && ($this->config->getSystemValueBool('htaccess.IgnoreFrontController', false) || getenv('front_controller_active') === 'true')) {
|
||||
$href = substr($href, 10);
|
||||
}
|
||||
|
||||
return $this->getAbsoluteURL('/index.php/apps/' . $appId . '/');
|
||||
return $this->getAbsoluteURL($href);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue