code: public function validateUsersSection(&$config)
      {
          if (!isset($config["users"])) {
              // No users are specified in the configuration file
              return;
          }
          $this->assertArray($config, "users");
          
          foreach ($config["users"] as $username => $userData) {
              $this->assertUsername($username, $config);
              try {
                  $this->validateUserData($userData);
              } catch (ConfigurationException $e) {
                  $e->addBeforeMessage("Invalid userdata for $username:");
                  throw $e;
              }
              
              // Assure case insensitivity of username indexing
              $lowercaseName = strtolower($username);
              if ($username !== $lowercaseName) {
                  if (!isset($config["users"][$lowercaseName])) {
                      $config["users"][$lowercaseName] = $userData;
                      unset($config["users"][$username]);
                  } else {
                      throw new ConfigurationException("User $username is defined multiple times.");
                  }
              }
          }
      }
docs: Validates the users section of the configuration
  
  May have side effects in the configuration array,
  if some usernames are not defined in lowercase
  
  @param array $config Configuration reference
  @throws ConfigurationException On a failed assertation