Получение данных пользователя из AD

$ldapServer = 1;

$dbLdap = \CLdapServer::GetByID($ldapServer);

if ($arLdap = $dbLdap->Fetch()) {
// this is a test connection, thus any parameters other than related to establishing a connection, have no effect here
$ldap = new CLDAP();

$ldap->arFields = array(
"SERVER" => $arLdap['SERVER'],
"PORT" => $arLdap['PORT'],
"ADMIN_LOGIN" => $arLdap['ADMIN_LOGIN'],
"ADMIN_PASSWORD" => $arLdap['ADMIN_PASSWORD'],
"BASE_DN" => $arLdap['BASE_DN'],
"GROUP_FILTER" => $arLdap['GROUP_FILTER'],
"GROUP_ID_ATTR" => $arLdap['GROUP_ID_ATTR'],
"USER_GROUP_ACCESSORY" => $arLdap['USER_GROUP_ACCESSORY'],
"USER_FILTER" => $arLdap['USER_FILTER'],
"~USER_FILTER" => $arLdap['USER_FILTER'],
"USER_ID_ATTR" => $arLdap['USER_ID_ATTR'],
"~USER_ID_ATTR" => $arLdap['USER_ID_ATTR'],
"GROUP_NAME_ATTR" => $arLdap['GROUP_NAME_ATTR'],
"CONVERT_UTF8" => $arLdap['CONVERT_UTF8'],
"MAX_PAGE_SIZE" => $arLdap['MAX_PAGE_SIZE']
);

if (isset($arLdap['CONNECTION_TYPE']))
$ldap->arFields["CONNECTION_TYPE"] = $arLdap['CONNECTION_TYPE'];

if ($ldap->Connect()) {
$ldp = $ldap;
$login = 'shvetsov_n';

$login_field = $login;
$password_field = false;

$ldap->BindAdmin();

$user_filter = "(&".$ldap->arFields["~USER_FILTER"]."(".$ldap->arFields["~USER_ID_ATTR"]."=".$ldap->specialchars($login_field)."))";
$dbLdapUsers = $ldap->Query($user_filter);

if (!$dbLdapUsers)
return false;

if ($arLdapUser = $dbLdapUsers->Fetch()) {

dd($arLdapUser);

if($password_field !== false) // also check auth
{
$user_dn = $arLdapUser['dn'];

if (!$ldap->Bind($user_dn, $password_field))
return false;
}

dd($ldap->GetUserFields($arLdapUser));
}

$ldp->Disconnect();
}
}
Категория: Заметки
Дата создания: 28.05.2026 13:07:35