]> source.dussan.org Git - nextcloud-server.git/commitdiff
LDAP: don't validate unconfigured (new) LDAP server configs, fixes #5518
authorArthur Schiwon <blizzz@owncloud.com>
Thu, 24 Oct 2013 18:26:05 +0000 (20:26 +0200)
committerArthur Schiwon <blizzz@owncloud.com>
Thu, 24 Oct 2013 18:26:05 +0000 (20:26 +0200)
apps/user_ldap/lib/connection.php

index 8d34fb2f41842a5ef4af64923daa5a72f81caaf4..14dfaa1174d122ebe39f2d8a53b11e0039dd48f5 100644 (file)
@@ -39,6 +39,8 @@ class Connection extends LDAPUtility {
        //settings handler
        protected $configuration;
 
+       protected $doNotValidate = false;
+
        /**
         * @brief Constructor
         * @param $configPrefix a string with the prefix for the configkey column (appconfig table)
@@ -57,6 +59,8 @@ class Connection extends LDAPUtility {
                }
                $this->hasPagedResultSupport =
                        $this->ldap->hasPagedResultSupport();
+               $this->doNotValidate = !in_array($this->configPrefix,
+                       Helper::getServerConfigurationPrefixes());
        }
 
        public function __destruct() {
@@ -88,6 +92,7 @@ class Connection extends LDAPUtility {
        }
 
        public function __set($name, $value) {
+               $this->doNotValidate = false;
                $before = $this->configuration->$name;
                $this->configuration->$name = $value;
                $after = $this->configuration->$name;
@@ -201,11 +206,13 @@ class Connection extends LDAPUtility {
                if(is_null($setParameters)) {
                        $setParameters = array();
                }
+               $this->doNotValidate = false;
                $this->configuration->setConfiguration($config, $setParameters);
                if(count($setParameters) > 0) {
                        $this->configured = $this->validateConfiguration();
                }
 
+
                return $this->configured;
        }
 
@@ -401,6 +408,14 @@ class Connection extends LDAPUtility {
         * @returns true if configuration seems OK, false otherwise
         */
        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
                // necessary, but advisable. If left empty, give an info message
                $this->doSoftValidation();