Browse Source

feat: expose enabled apps in core capabilities

Signed-off-by: Maksim Sukharev <antreesy.web@gmail.com>
fix/noid/expose-calendar-enabled
Maksim Sukharev 4 months ago
parent
commit
3cf6fecc99
  1. 16
      lib/private/OCS/CoreCapabilities.php
  2. 2
      lib/private/Server.php

16
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;
}
}

2
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);

Loading…
Cancel
Save