Merge pull request #7844 from owncloud/fix_7803_blizzz
LDAP: create a new instance of Configuration on clone, fixes #7803
This commit is contained in:
commit
4be0b3f6cc
|
@ -119,9 +119,9 @@ class Configuration {
|
||||||
|
|
||||||
$cta = $this->getConfigTranslationArray();
|
$cta = $this->getConfigTranslationArray();
|
||||||
foreach($config as $inputkey => $val) {
|
foreach($config as $inputkey => $val) {
|
||||||
if(strpos($inputkey, '_') !== false && isset($cta[$inputkey])) {
|
if(strpos($inputkey, '_') !== false && array_key_exists($inputkey, $cta)) {
|
||||||
$key = $cta[$inputkey];
|
$key = $cta[$inputkey];
|
||||||
} elseif(isset($this->config[$inputkey])) {
|
} elseif(array_key_exists($inputkey, $this->config)) {
|
||||||
$key = $inputkey;
|
$key = $inputkey;
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -78,6 +78,8 @@ class Connection extends LDAPUtility {
|
||||||
//a cloned instance inherits the connection resource. It may use it,
|
//a cloned instance inherits the connection resource. It may use it,
|
||||||
//but it may not disconnect it
|
//but it may not disconnect it
|
||||||
$this->dontDestruct = true;
|
$this->dontDestruct = true;
|
||||||
|
$this->configuration = new Configuration($this->configPrefix,
|
||||||
|
!is_null($this->configID));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __get($name) {
|
public function __get($name) {
|
||||||
|
|
|
@ -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']);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue