]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add capability for editable scopes in provisioning API
authorVincent Petry <vincent@nextcloud.com>
Thu, 25 Mar 2021 10:16:21 +0000 (11:16 +0100)
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>
Mon, 29 Mar 2021 07:03:35 +0000 (07:03 +0000)
Signed-off-by: Vincent Petry <vincent@nextcloud.com>
apps/provisioning_api/composer/composer/autoload_classmap.php
apps/provisioning_api/composer/composer/autoload_static.php
apps/provisioning_api/lib/AppInfo/Application.php
apps/provisioning_api/lib/Capabilities.php [new file with mode: 0644]

index e94a97c194911ad18d72aa8af5be3699b8fe6fc0..22927806e656dd9c036197e889601dfb7781089a 100644 (file)
@@ -8,6 +8,7 @@ $baseDir = $vendorDir;
 return array(
     'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
     'OCA\\Provisioning_API\\AppInfo\\Application' => $baseDir . '/../lib/AppInfo/Application.php',
+    'OCA\\Provisioning_API\\Capabilities' => $baseDir . '/../lib/Capabilities.php',
     'OCA\\Provisioning_API\\Controller\\AUserData' => $baseDir . '/../lib/Controller/AUserData.php',
     'OCA\\Provisioning_API\\Controller\\AppConfigController' => $baseDir . '/../lib/Controller/AppConfigController.php',
     'OCA\\Provisioning_API\\Controller\\AppsController' => $baseDir . '/../lib/Controller/AppsController.php',
index b982f203211aeff37e6f78c4c2f8bbbfd164c963..f5a4b73f4f8756f87832078ec6b187f5bf27437b 100644 (file)
@@ -23,6 +23,7 @@ class ComposerStaticInitProvisioning_API
     public static $classMap = array (
         'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
         'OCA\\Provisioning_API\\AppInfo\\Application' => __DIR__ . '/..' . '/../lib/AppInfo/Application.php',
+        'OCA\\Provisioning_API\\Capabilities' => __DIR__ . '/..' . '/../lib/Capabilities.php',
         'OCA\\Provisioning_API\\Controller\\AUserData' => __DIR__ . '/..' . '/../lib/Controller/AUserData.php',
         'OCA\\Provisioning_API\\Controller\\AppConfigController' => __DIR__ . '/..' . '/../lib/Controller/AppConfigController.php',
         'OCA\\Provisioning_API\\Controller\\AppsController' => __DIR__ . '/..' . '/../lib/Controller/AppsController.php',
index 7ec21c3329e1309217a14972b092e3846708d72c..af6b2b3371186818db1076c4f19c405eaf2ab58a 100644 (file)
@@ -29,6 +29,7 @@
 namespace OCA\Provisioning_API\AppInfo;
 
 use OC\Group\Manager as GroupManager;
+use OCA\Provisioning_API\Capabilities;
 use OCA\Provisioning_API\Listener\UserDeletedListener;
 use OCA\Provisioning_API\Middleware\ProvisioningApiMiddleware;
 use OCA\Settings\Mailer\NewUserMailHelper;
@@ -92,6 +93,7 @@ class Application extends App implements IBootstrap {
                        );
                });
                $context->registerMiddleware(ProvisioningApiMiddleware::class);
+               $context->registerCapability(Capabilities::class);
        }
 
        public function boot(IBootContext $context): void {
diff --git a/apps/provisioning_api/lib/Capabilities.php b/apps/provisioning_api/lib/Capabilities.php
new file mode 100644 (file)
index 0000000..eaec844
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * @copyright Copyright (c) 2021 Vincent Petry <vincent@nextcloud.com>
+ *
+ * @author Vincent Petry <vincent@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\Provisioning_API;
+
+use OCP\App\IAppManager;
+use OCP\Capabilities\ICapability;
+
+class Capabilities implements ICapability {
+
+       /** @var IAppManager */
+       private $appManager;
+
+       public function __construct(IAppManager $appManager) {
+               $this->appManager = $appManager;
+       }
+
+       /**
+        * Function an app uses to return the capabilities
+        *
+        * @return array Array containing the apps capabilities
+        */
+       public function getCapabilities() {
+               return [
+                       'provisioning_api' => [
+                               'version' => $this->appManager->getAppVersion('provisioning_api'),
+                               'hasAccountPropertyScopes' => true,
+                       ]
+               ];
+       }
+}