From 3093eccb6b5ec088ab2faf03ff741eb433ccdedb Mon Sep 17 00:00:00 2001 From: tobiasKaminsky Date: Tue, 17 Dec 2024 10:14:56 +0100 Subject: [PATCH] feat(App): Add Capabilities Signed-off-by: provokateurin --- lib/AppInfo/Application.php | 2 ++ lib/Capabilities.php | 45 +++++++++++++++++++++++++++++++++++++ openapi.json | 16 +++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 lib/Capabilities.php diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index bddc57f2..909dd4c8 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -10,6 +10,7 @@ namespace OCA\Recommendations\AppInfo; use OCA\Files\Event\LoadAdditionalScriptsEvent; +use OCA\Recommendations\Capabilities; use OCA\Recommendations\Dashboard\RecommendationWidget; use OCA\Recommendations\Listeners\FilesLoadAdditionalScriptsListener; use OCP\AppFramework\App; @@ -27,6 +28,7 @@ public function __construct(array $urlParams = []) { public function register(IRegistrationContext $context): void { $context->registerEventListener(LoadAdditionalScriptsEvent::class, FilesLoadAdditionalScriptsListener::class); $context->registerDashboardWidget(RecommendationWidget::class); + $context->registerCapability(Capabilities::class); } public function boot(IBootContext $context): void { diff --git a/lib/Capabilities.php b/lib/Capabilities.php new file mode 100644 index 00000000..d546b29d --- /dev/null +++ b/lib/Capabilities.php @@ -0,0 +1,45 @@ +userSession->getUser(); + if ($user === null) { + return []; + } + + $enabled = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'enabled', 'true') === 'true'; + return [ + 'recommendations' => [ + 'enabled' => $enabled, + ], + ]; + } +} diff --git a/openapi.json b/openapi.json index 2a96b448..c72e5f6c 100644 --- a/openapi.json +++ b/openapi.json @@ -20,6 +20,22 @@ } }, "schemas": { + "Capabilities": { + "type": "object", + "properties": { + "recommendations": { + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean" + } + } + } + } + }, "OCSMeta": { "type": "object", "required": [