aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/OCS/CoreCapabilities.php16
-rw-r--r--lib/private/Server.php2
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);