aboutsummaryrefslogtreecommitdiffstats
path: root/apps/sharebymail/lib/Capabilities.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/sharebymail/lib/Capabilities.php')
-rw-r--r--apps/sharebymail/lib/Capabilities.php71
1 files changed, 71 insertions, 0 deletions
diff --git a/apps/sharebymail/lib/Capabilities.php b/apps/sharebymail/lib/Capabilities.php
new file mode 100644
index 00000000000..425a695ff36
--- /dev/null
+++ b/apps/sharebymail/lib/Capabilities.php
@@ -0,0 +1,71 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\ShareByMail;
+
+use OCA\ShareByMail\Settings\SettingsManager;
+use OCP\App\IAppManager;
+use OCP\Capabilities\ICapability;
+use OCP\Share\IManager;
+
+class Capabilities implements ICapability {
+
+ public function __construct(
+ private IManager $manager,
+ private SettingsManager $settingsManager,
+ private IAppManager $appManager,
+ ) {
+ }
+
+ /**
+ * @return array{
+ * files_sharing?: array{
+ * sharebymail: array{
+ * enabled: bool,
+ * send_password_by_mail: bool,
+ * upload_files_drop: array{
+ * enabled: bool,
+ * },
+ * password: array{
+ * enabled: bool,
+ * enforced: bool,
+ * },
+ * expire_date: array{
+ * enabled: bool,
+ * enforced: bool,
+ * },
+ * }
+ * }
+ * }
+ */
+ public function getCapabilities(): array {
+ if (!$this->appManager->isEnabledForUser('files_sharing')) {
+ return [];
+ }
+ return [
+ 'files_sharing'
+ => [
+ 'sharebymail' => [
+ 'enabled' => $this->manager->shareApiAllowLinks(),
+ 'send_password_by_mail' => $this->settingsManager->sendPasswordByMail(),
+ 'upload_files_drop' => [
+ 'enabled' => true,
+ ],
+ 'password' => [
+ 'enabled' => true,
+ 'enforced' => $this->manager->shareApiLinkEnforcePassword(),
+ ],
+ 'expire_date' => [
+ 'enabled' => true,
+ 'enforced' => $this->manager->shareApiLinkDefaultExpireDateEnforced(),
+ ],
+ ]
+ ]
+ ];
+ }
+}