summaryrefslogtreecommitdiffstats
path: root/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
diff options
context:
space:
mode:
authorArthur Schiwon <blizzz@arthur-schiwon.de>2019-02-13 00:14:56 +0100
committerArthur Schiwon <blizzz@arthur-schiwon.de>2019-02-14 15:22:22 +0100
commit792bcb82ae5149c86afcd4d550e3a22d60d330f7 (patch)
treeca2ecccf6865254fb7ed463424a4ae34d7ddeded /apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
parenta26bcd8e8fa11870c9192d24c73fbef3ef6112de (diff)
downloadnextcloud-server-792bcb82ae5149c86afcd4d550e3a22d60d330f7.tar.gz
nextcloud-server-792bcb82ae5149c86afcd4d550e3a22d60d330f7.zip
add LDAP ConfigHandler for external storages and "$home" var
* handler registered upon OCA\\Files_External::loadAdditionalBackends event as user_ldap is loaded before files_external * new configuration field "ldapExtStorageHomeAttribute" (not in GUI yet) Signed-off-by: Arthur Schiwon <blizzz@arthur-schiwon.de>
Diffstat (limited to 'apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php')
-rw-r--r--apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php74
1 files changed, 74 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..98a3cc71263
--- /dev/null
+++ b/apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php
@@ -0,0 +1,74 @@
+<?php
+/**
+ * @copyright Copyright (c) 2019 Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ *
+ * @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\User_LDAP\Handler;
+
+use OCA\Files_External\Config\IConfigHandler;
+use OCA\Files_External\Config\SimpleSubstitutionTrait;
+use OCA\User_LDAP\User_Proxy;
+use OCP\IUserSession;
+
+class ExtStorageConfigHandler implements IConfigHandler {
+ use SimpleSubstitutionTrait;
+
+ /** @var IUserSession */
+ private $session;
+
+ public function __construct(IUserSession $session) {
+ $this->placeholder = 'home';
+ $this->session = $session;
+ }
+
+ /**
+ * @param mixed $optionValue
+ * @return mixed the same type as $optionValue
+ * @since 16.0.0
+ * @throws \Exception
+ */
+ public function handle($optionValue) {
+ $user = $this->session->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->getExtStorageHome();
+
+ return $this->processInput($optionValue, $extHome);
+ }
+}