LDAP: don't validate unconfigured (new) LDAP server configs, fixes #5518

This commit is contained in:
Arthur Schiwon 2013-10-24 20:26:05 +02:00
parent 7fa418c81a
commit c48157e3b8
1 changed files with 15 additions and 0 deletions

View File

@ -39,6 +39,8 @@ class Connection extends LDAPUtility {
//settings handler //settings handler
protected $configuration; protected $configuration;
protected $doNotValidate = false;
/** /**
* @brief Constructor * @brief Constructor
* @param $configPrefix a string with the prefix for the configkey column (appconfig table) * @param $configPrefix a string with the prefix for the configkey column (appconfig table)
@ -57,6 +59,8 @@ class Connection extends LDAPUtility {
} }
$this->hasPagedResultSupport = $this->hasPagedResultSupport =
$this->ldap->hasPagedResultSupport(); $this->ldap->hasPagedResultSupport();
$this->doNotValidate = !in_array($this->configPrefix,
Helper::getServerConfigurationPrefixes());
} }
public function __destruct() { public function __destruct() {
@ -88,6 +92,7 @@ class Connection extends LDAPUtility {
} }
public function __set($name, $value) { public function __set($name, $value) {
$this->doNotValidate = false;
$before = $this->configuration->$name; $before = $this->configuration->$name;
$this->configuration->$name = $value; $this->configuration->$name = $value;
$after = $this->configuration->$name; $after = $this->configuration->$name;
@ -201,11 +206,13 @@ class Connection extends LDAPUtility {
if(is_null($setParameters)) { if(is_null($setParameters)) {
$setParameters = array(); $setParameters = array();
} }
$this->doNotValidate = false;
$this->configuration->setConfiguration($config, $setParameters); $this->configuration->setConfiguration($config, $setParameters);
if(count($setParameters) > 0) { if(count($setParameters) > 0) {
$this->configured = $this->validateConfiguration(); $this->configured = $this->validateConfiguration();
} }
return $this->configured; return $this->configured;
} }
@ -401,6 +408,14 @@ class Connection extends LDAPUtility {
* @returns true if configuration seems OK, false otherwise * @returns true if configuration seems OK, false otherwise
*/ */
private function validateConfiguration() { private function validateConfiguration() {
if($this->doNotValidate) {
//don't do a validation if it is a new configuration with pure
//default values. Will be allowed on changes via __set or
//setConfiguration
return false;
}
// first step: "soft" checks: settings that are not really // first step: "soft" checks: settings that are not really
// necessary, but advisable. If left empty, give an info message // necessary, but advisable. If left empty, give an info message
$this->doSoftValidation(); $this->doSoftValidation();