diff options
author | blizzz <blizzz@owncloud.com> | 2014-03-21 18:02:10 +0100 |
---|---|---|
committer | blizzz <blizzz@owncloud.com> | 2014-03-21 18:02:10 +0100 |
commit | 4be0b3f6cce540282c6745d6bf3d2a0fa4ac65b4 (patch) | |
tree | 371dd2eaacacdb7129d1ecd3c82023e375c107b7 | |
parent | 43313d120dfd943e823f2f4ff12b6f5893284743 (diff) | |
parent | 422ccf4cdb7558cea6c3c92cca3c5ea4ce192f44 (diff) | |
download | nextcloud-server-4be0b3f6cce540282c6745d6bf3d2a0fa4ac65b4.tar.gz nextcloud-server-4be0b3f6cce540282c6745d6bf3d2a0fa4ac65b4.zip |
Merge pull request #7844 from owncloud/fix_7803_blizzz
LDAP: create a new instance of Configuration on clone, fixes #7803
-rw-r--r-- | apps/user_ldap/lib/configuration.php | 4 | ||||
-rw-r--r-- | apps/user_ldap/lib/connection.php | 2 | ||||
-rw-r--r-- | apps/user_ldap/tests/connection.php | 54 |
3 files changed, 58 insertions, 2 deletions
diff --git a/apps/user_ldap/lib/configuration.php b/apps/user_ldap/lib/configuration.php index 612a623e910..d42b1c05820 100644 --- a/apps/user_ldap/lib/configuration.php +++ b/apps/user_ldap/lib/configuration.php @@ -119,9 +119,9 @@ class Configuration { $cta = $this->getConfigTranslationArray(); foreach($config as $inputkey => $val) { - if(strpos($inputkey, '_') !== false && isset($cta[$inputkey])) { + if(strpos($inputkey, '_') !== false && array_key_exists($inputkey, $cta)) { $key = $cta[$inputkey]; - } elseif(isset($this->config[$inputkey])) { + } elseif(array_key_exists($inputkey, $this->config)) { $key = $inputkey; } else { continue; diff --git a/apps/user_ldap/lib/connection.php b/apps/user_ldap/lib/connection.php index b2075748a3b..08ac4ac626b 100644 --- a/apps/user_ldap/lib/connection.php +++ b/apps/user_ldap/lib/connection.php @@ -78,6 +78,8 @@ class Connection extends LDAPUtility { //a cloned instance inherits the connection resource. It may use it, //but it may not disconnect it $this->dontDestruct = true; + $this->configuration = new Configuration($this->configPrefix, + !is_null($this->configID)); } public function __get($name) { diff --git a/apps/user_ldap/tests/connection.php b/apps/user_ldap/tests/connection.php new file mode 100644 index 00000000000..f51b0c83017 --- /dev/null +++ b/apps/user_ldap/tests/connection.php @@ -0,0 +1,54 @@ +<?php +/** +* ownCloud +* +* @author Arthur Schiwon +* @copyright 2013 Arthur Schiwon blizzz@owncloud.com +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE +* License as published by the Free Software Foundation; either +* version 3 of the License, or any later version. +* +* This library 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 library. If not, see <http://www.gnu.org/licenses/>. +* +*/ + +namespace OCA\user_ldap\tests; + +class Test_Connection extends \PHPUnit_Framework_TestCase { + + public function testOriginalAgentUnchangedOnClone() { + //background: upon login a bind is done with the user credentials + //which is valid for the whole LDAP resource. It needs to be reset + //to the agent's credentials + $lw = $this->getMock('\OCA\user_ldap\lib\ILDAPWrapper'); + + $connection = new \OCA\user_ldap\lib\Connection($lw, '', null); + $agent = array( + 'ldapAgentName' => 'agent', + 'ldapAgentPassword' => '123456', + ); + $connection->setConfiguration($agent); + + $testConnection = clone $connection; + $user = array( + 'ldapAgentName' => 'user', + 'ldapAgentPassword' => 'password', + ); + $testConnection->setConfiguration($user); + + $agentName = $connection->ldapAgentName; + $agentPawd = $connection->ldapAgentPassword; + + $this->assertSame($agentName, $agent['ldapAgentName']); + $this->assertSame($agentPawd, $agent['ldapAgentPassword']); + } + +}
\ No newline at end of file |