• Модуль: ldap
  • Путь к файлу: ~/bitrix/modules/ldap/classes/general/ldap.php
  • Класс: CLDAP
  • Вызов: CLDAP::OnFindExternalUser
static function OnFindExternalUser($login)
{
	$login = (string)$login;

	if($login === '')
	{
		return 0;
	}

	// Hit cache
	static $result = [];

	if(isset($result[$login]))
	{
		return $result[$login];
	}

	$filter = ["ACTIVE" => "Y"];
	$prefix = mb_strpos($login, "\");

	if($prefix === false && COption::GetOptionString("ldap", "ntlm_auth_without_prefix", "Y") !== "Y")
	{
		return 0;
	}

	if($prefix > 0)
	{
		$filter["CODE"] = mb_substr($login, 0, $prefix);
		$login = mb_substr($login, $prefix + 1);
	}

	$userId = 0;

	$dbServ = CLdapServer::GetList([], $filter);

	while($serv = $dbServ->GetNextServer())
	{
		if($serv->Connect())
		{
			if($arLdapUser = $serv->FindUser($login))
			{
				$userId = (int)$serv->SetUser(
					$arLdapUser,
					(COption::GetOptionString("ldap", "add_user_when_auth", "Y") === "Y")
				);
			}

			$serv->Disconnect();

			if($userId > 0)
			{
				break;
			}
		}
	}

	$result[$login] = $userId;
	return $userId;
}