diff options
author | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2019-02-13 00:14:56 +0100 |
---|---|---|
committer | Arthur Schiwon <blizzz@arthur-schiwon.de> | 2019-02-14 15:22:22 +0100 |
commit | 792bcb82ae5149c86afcd4d550e3a22d60d330f7 (patch) | |
tree | ca2ecccf6865254fb7ed463424a4ae34d7ddeded /apps/user_ldap/lib/Handler/ExtStorageConfigHandler.php | |
parent | a26bcd8e8fa11870c9192d24c73fbef3ef6112de (diff) | |
download | nextcloud-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.php | 74 |
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); + } +} |