aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Mount/ObjectHomeMountProvider.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Files/Mount/ObjectHomeMountProvider.php')
-rw-r--r--lib/private/Files/Mount/ObjectHomeMountProvider.php45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/private/Files/Mount/ObjectHomeMountProvider.php b/lib/private/Files/Mount/ObjectHomeMountProvider.php
new file mode 100644
index 00000000000..4b088f2c808
--- /dev/null
+++ b/lib/private/Files/Mount/ObjectHomeMountProvider.php
@@ -0,0 +1,45 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-FileCopyrightText: 2016 ownCloud, Inc.
+ * SPDX-License-Identifier: AGPL-3.0-only
+ */
+namespace OC\Files\Mount;
+
+use OC\Files\ObjectStore\HomeObjectStoreStorage;
+use OC\Files\ObjectStore\PrimaryObjectStoreConfig;
+use OCP\Files\Config\IHomeMountProvider;
+use OCP\Files\Mount\IMountPoint;
+use OCP\Files\Storage\IStorageFactory;
+use OCP\IUser;
+
+/**
+ * Mount provider for object store home storages
+ */
+class ObjectHomeMountProvider implements IHomeMountProvider {
+ public function __construct(
+ private PrimaryObjectStoreConfig $objectStoreConfig,
+ ) {
+ }
+
+ /**
+ * Get the home mount for a user
+ *
+ * @param IUser $user
+ * @param IStorageFactory $loader
+ * @return ?IMountPoint
+ */
+ public function getHomeMountForUser(IUser $user, IStorageFactory $loader): ?IMountPoint {
+ $objectStoreConfig = $this->objectStoreConfig->getObjectStoreConfigForUser($user);
+ if ($objectStoreConfig === null) {
+ return null;
+ }
+ $arguments = array_merge($objectStoreConfig['arguments'], [
+ 'objectstore' => $this->objectStoreConfig->buildObjectStore($objectStoreConfig),
+ 'user' => $user,
+ ]);
+
+ return new HomeMountPoint($user, HomeObjectStoreStorage::class, '/' . $user->getUID(), $arguments, $loader, null, null, self::class);
+ }
+}