• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/groupdavclient.php
  • Класс: CDavGroupdavClient
  • Вызов: CDavGroupdavClient::Authenticate
private function Authenticate($request, $response)
{
	$authenticate = $response->GetHeader('WWW-Authenticate');
	$authenticateProxy = $response->GetHeader('Proxy-Authenticate');

	if (is_null($authenticate) && is_null($authenticateProxy))
	{
		return null;
	}

	if (!is_null($authenticate) && !is_array($authenticate))
	{
		$authenticate = array($authenticate);
	}
	if (!is_null($authenticateProxy) && !is_array($authenticateProxy))
	{
		$authenticateProxy = array($authenticateProxy);
	}

	if (!is_null($authenticate))
	{
		$arAuth = array();
		foreach ($authenticate as $auth)
		{
			$auth = trim($auth);
			$p = mb_strpos($auth, " ");
			if ($p !== false)
				$arAuth[mb_strtolower(mb_substr($auth, 0, $p))] = trim(mb_substr($auth, $p));
			else
				$arAuth[mb_strtolower($auth)] = "";
		}

		if (array_key_exists("digest", $arAuth))
		{
			$request = $this->AuthenticateDigest(CDavExchangeClientResponce::ExtractArray($arAuth["digest"]), $request, $response, "Authorization");
		}
		elseif (array_key_exists("basic", $arAuth))
		{
			$request = $this->AuthenticateBasic(CDavExchangeClientResponce::ExtractArray($arAuth["basic"]), $request, $response, "Authorization");
		}
		elseif (array_key_exists("googlelogin", $arAuth))
		{
			$request = $this->AuthenticateGoogleLogin(CDavExchangeClientResponce::ExtractArray($arAuth["basic"]), $request, $response, "Authorization");
			if ($request === null)
				return null;
		}
		else
			return null;
	}

	if (!is_null($authenticateProxy))
	{
		$arAuthProxy = array();
		foreach ($authenticateProxy as $auth)
		{
			$auth = trim($auth);
			$p = mb_strpos($auth, " ");
			if ($p !== false)
				$arAuthProxy[mb_strtolower(mb_substr($auth, 0, $p))] = trim(mb_substr($auth, $p));
			else
				$arAuthProxy[mb_strtolower($auth)] = "";
		}

		if (array_key_exists("digest", $arAuthProxy))
			$request = $this->AuthenticateDigest(CDavExchangeClientResponce::ExtractArray($arAuthProxy["digest"]), $request, $response, "Proxy-Authorization");
		elseif (array_key_exists("basic", $arAuthProxy))
			$request = $this->AuthenticateBasic(CDavExchangeClientResponce::ExtractArray($arAuthProxy["basic"]), $request, $response, "Proxy-Authorization");
		else
			return null;
	}

	return $request;
}