diff options
-rw-r--r-- | lib/private/OCS/CoreCapabilities.php | 16 | ||||
-rw-r--r-- | lib/private/Server.php | 2 |
2 files changed, 16 insertions, 2 deletions
diff --git a/lib/private/OCS/CoreCapabilities.php b/lib/private/OCS/CoreCapabilities.php index 3d988a8662e..1f7e5c934b3 100644 --- a/lib/private/OCS/CoreCapabilities.php +++ b/lib/private/OCS/CoreCapabilities.php @@ -7,9 +7,11 @@ */ namespace OC\OCS; +use OCP\App\IAppManager; use OCP\Capabilities\ICapability; use OCP\IConfig; use OCP\IURLGenerator; +use OCP\IUserSession; /** * Class Capabilities @@ -22,6 +24,8 @@ class CoreCapabilities implements ICapability { */ public function __construct( private IConfig $config, + private IAppManager $appManager, + private IUserSession $userSession, ) { } @@ -35,11 +39,12 @@ class CoreCapabilities implements ICapability { * reference-api: boolean, * reference-regex: string, * mod-rewrite-working: boolean, + * enabled-apps: list<string>, * }, * } */ public function getCapabilities(): array { - return [ + $capabilities = [ 'core' => [ 'pollinterval' => $this->config->getSystemValueInt('pollinterval', 60), 'webdav-root' => $this->config->getSystemValueString('webdav-root', 'remote.php/webdav'), @@ -48,5 +53,14 @@ class CoreCapabilities implements ICapability { 'mod-rewrite-working' => $this->config->getSystemValueBool('htaccess.IgnoreFrontController') || getenv('front_controller_active') === 'true', ], ]; + + $user = $this->userSession->getUser(); + if ($user === null) { + $capabilities['core']['enabled-apps'] = $this->appManager->getEnabledApps(); + } else { + $capabilities['core']['enabled-apps'] = $this->appManager->getEnabledAppsForUser($user); + } + + return $capabilities; } } diff --git a/lib/private/Server.php b/lib/private/Server.php index bf07ee355ea..5e213711183 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1006,7 +1006,7 @@ class Server extends ServerContainer implements IServerContainer { $this->registerService(CapabilitiesManager::class, function (ContainerInterface $c) { $manager = new CapabilitiesManager($c->get(LoggerInterface::class)); $manager->registerCapability(function () use ($c) { - return new \OC\OCS\CoreCapabilities($c->get(\OCP\IConfig::class)); + return new \OC\OCS\CoreCapabilities($c->get(\OCP\IConfig::class), $c->get(IAppManager::class), $c->get(IUserSession::class),); }); $manager->registerCapability(function () use ($c) { return $c->get(\OC\Security\Bruteforce\Capabilities::class); |