aboutsummaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
diff options
context:
space:
mode:
Diffstat (limited to 'apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php')
-rw-r--r--apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php51
1 files changed, 51 insertions, 0 deletions
diff --git a/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
new file mode 100644
index 00000000000..8b63d54aa66
--- /dev/null
+++ b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors
+ * SPDX-License-Identifier: AGPL-3.0-or-later
+ */
+namespace OCA\User_LDAP\Handler;
+
+use OCA\Files_External\Config\IConfigHandler;
+use OCA\Files_External\Config\SimpleSubstitutionTrait;
+use OCA\Files_External\Config\UserContext;
+use OCA\User_LDAP\User_Proxy;
+
+class ExtStorageConfigHandler extends UserContext implements IConfigHandler {
+ use SimpleSubstitutionTrait;
+
+ /**
+ * @param mixed $optionValue
+ * @return mixed the same type as $optionValue
+ * @since 16.0.0
+ * @throws \Exception
+ */
+ public function handle($optionValue) {
+ $this->placeholder = 'home';
+ $user = $this->getUser();
+
+ if ($user === null) {
+ return $optionValue;
+ }
+
+ $backend = $user->getBackend();
+ if (!$backend instanceof User_Proxy) {
+ return $optionValue;
+ }
+
+ $access = $backend->getLDAPAccess($user->getUID());
+ if (!$access) {
+ return $optionValue;
+ }
+
+ $attribute = $access->connection->ldapExtStorageHomeAttribute;
+ if (empty($attribute)) {
+ return $optionValue;
+ }
+
+ $ldapUser = $access->userManager->get($user->getUID());
+ $extHome = $ldapUser !== null ? $ldapUser->getExtStorageHome() : '';
+
+ return $this->processInput($optionValue, $extHome);
+ }
+}