aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaksim Sukharev <antreesy.web@gmail.com>2025-05-31 11:49:33 +0200
committerMaksim Sukharev <antreesy.web@gmail.com>2025-05-31 12:15:23 +0200
commit3cf6fecc99eaf05a9477774f6eba46b699fde516 (patch)
tree31c4d3b618b0deac0743194f02a1c4d4b0518c89
parent054f443264ecd85422749e75e574a7374c7be912 (diff)
downloadnextcloud-server-fix/noid/expose-calendar-enabled.tar.gz
nextcloud-server-fix/noid/expose-calendar-enabled.zip
feat: expose enabled apps in core capabilitiesfix/noid/expose-calendar-enabled
Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
-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);