aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJana Peper <jana.peper@nextcloud.com>2025-06-18 16:03:20 +0200
committerJana Peper <jana.peper@nextcloud.com>2025-06-18 17:31:20 +0200
commit50c9852e240727e1aa8c0fc982e9d997a99a192e (patch)
tree6913d75b5b8b9c68292a12938e4a4e85154d85f4
parent98871fe474a66a93c49a7d1764b6c98d885fcfa1 (diff)
downloadnextcloud-server-50c9852e240727e1aa8c0fc982e9d997a99a192e.tar.gz
nextcloud-server-50c9852e240727e1aa8c0fc982e9d997a99a192e.zip
feat: add ocs route to get apps enabled for current user
Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
-rw-r--r--apps/provisioning_api/appinfo/routes.php1
-rw-r--r--apps/provisioning_api/lib/Controller/UsersController.php15
-rw-r--r--lib/private/App/AppManager.php2
-rw-r--r--lib/public/App/IAppManager.php2
4 files changed, 18 insertions, 2 deletions
diff --git a/apps/provisioning_api/appinfo/routes.php b/apps/provisioning_api/appinfo/routes.php
index 66d1fb699a9..df4f806fa08 100644
--- a/apps/provisioning_api/appinfo/routes.php
+++ b/apps/provisioning_api/appinfo/routes.php
@@ -35,6 +35,7 @@ return [
['root' => '/cloud', 'name' => 'Users#getCurrentUser', 'url' => '/user', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#getEditableFields', 'url' => '/user/fields', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#getEditableFieldsForUser', 'url' => '/user/fields/{userId}', 'verb' => 'GET'],
+ ['root' => '/cloud', 'name' => 'Users#getEnabledApps', 'url' => '/user/apps', 'verb' => 'GET'],
['root' => '/cloud', 'name' => 'Users#editUser', 'url' => '/users/{userId}', 'verb' => 'PUT'],
['root' => '/cloud', 'name' => 'Users#editUserMultiValue', 'url' => '/users/{userId}/{collectionName}', 'verb' => 'PUT', 'requirements' => ['collectionName' => '^(?!enable$|disable$)[a-zA-Z0-9_]*$']],
['root' => '/cloud', 'name' => 'Users#wipeUserDevices', 'url' => '/users/{userId}/wipe', 'verb' => 'POST'],
diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php
index 4b3db45f518..3dfa8f1fe5a 100644
--- a/apps/provisioning_api/lib/Controller/UsersController.php
+++ b/apps/provisioning_api/lib/Controller/UsersController.php
@@ -21,6 +21,7 @@ use OCA\Settings\Settings\Admin\Users;
use OCP\Accounts\IAccountManager;
use OCP\Accounts\IAccountProperty;
use OCP\Accounts\PropertyDoesNotExistException;
+use OCP\App\IAppManager;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\Attribute\AuthorizedAdminSetting;
use OCP\AppFramework\Http\Attribute\NoAdminRequired;
@@ -79,6 +80,7 @@ class UsersController extends AUserDataOCSController {
private KnownUserService $knownUserService,
private IEventDispatcher $eventDispatcher,
private IPhoneNumberUtil $phoneNumberUtil,
+ private IAppManager $appManager,
) {
parent::__construct(
$appName,
@@ -710,6 +712,19 @@ class UsersController extends AUserDataOCSController {
}
/**
+ * Get a list of enabled apps for the current user
+ *
+ * @return DataResponse<Http::STATUS_OK, array{apps: list<string>}, array{}>
+ *
+ * 200: Enabled apps returned
+ */
+ #[NoAdminRequired]
+ public function getEnabledApps(): DataResponse {
+ $currentLoggedInUser = $this->userSession->getUser();
+ return new DataResponse(['apps' => $this->appManager->getEnabledAppsForUser($currentLoggedInUser)]);
+ }
+
+ /**
* @NoSubAdminRequired
*
* Get a list of fields that are editable for a user
diff --git a/lib/private/App/AppManager.php b/lib/private/App/AppManager.php
index 4223d09e3dc..303a88e9ceb 100644
--- a/lib/private/App/AppManager.php
+++ b/lib/private/App/AppManager.php
@@ -204,7 +204,7 @@ class AppManager implements IAppManager {
* List all apps enabled for a user
*
* @param \OCP\IUser $user
- * @return string[]
+ * @return list<string>
*/
public function getEnabledAppsForUser(IUser $user) {
$apps = $this->getEnabledAppsValues();
diff --git a/lib/public/App/IAppManager.php b/lib/public/App/IAppManager.php
index 6eae870216f..20019ce1ffd 100644
--- a/lib/public/App/IAppManager.php
+++ b/lib/public/App/IAppManager.php
@@ -184,7 +184,7 @@ interface IAppManager {
* List all apps enabled for a user
*
* @param \OCP\IUser $user
- * @return string[]
+ * @return list<string>
* @since 8.1.0
*/
public function getEnabledAppsForUser(IUser $user);