ldap в php

if ($this->validate() && !is_null($this->_user = $this->getUser())) {
if (Yii::$app->user->login($this->_user, $this->rememberMe ? 3600 * 24 * 30 : 0));
return $this->_user;
}
global $login_error; // текст ошибки, если авторизация не пройдена
$domain=»ex;
$ldaphost = «exxample»;
$ldapport = «389»;
$base = «exx»;
$filter=»(*)»;
$username = $this->username;

$password = $this->password;
//подсоединяемся к LDAP серверу
$ldap = ldap_connect($ldaphost,$ldapport) or die(‘Cannot connect to LDAP Server.’);
//Включаем LDAP протокол версии 3
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3) or die(‘Unable to set LDAP protocol version’);
//Отключаем обработку рефералов для ldap v3
ldap_set_option($ldap, LDAP_OPT_REFERRALS, 0) or die(‘Unable to set LDAP OPT REFERRALS’);
var_dump(@ldap_bind($ldap, ‘infotest.ad.kubbti.ru’, ‘password’));
if ($ldap) /* Получаем данные из AD */
{
// Пытаемся войти в LDAP при помощи введенных логина и пароля
$bind = @ldap_bind($ldap,$username,$password);
if ($bind) //Привязка LDAP прошла успешно!
{
// Проверим, является ли пользователь членом указанной группы и не отключен ли он.
$result = ldap_search($ldap,$base,»(samAccountName=».$username.»)»);;
$result_ent = ldap_get_entries($ldap,$result);

if (!$result) {
$login_error = ‘Ошибка обращения к LDAP.’;
return false;
}
// Получаем количество результатов предыдущей проверки
$result_ent = ldap_get_entries($ldap,$result);
if (!$result_ent)
{
$login_error = ‘Результатов проверки получить не удалось’;
return false;
}

}
else
{
$login_error = ‘Вы ввели неправильный <br>логин или пароль’;
return false;
}
return $ldap=ldap_connect($ldaphost,$ldapport);
ldap_close($ldap);
}

if ($result_ent[‘count’] != 0 )
{
// тут код в случае если авторизации пройдена
$fullname = $result_ent[0][«displayname»][0]; //полное имя пользователя
$_SESSION[«fullname»] = $fullname; //сохраняем в переменной сессии для отображения
return true;
exit;
}
else
{
$login_error = ‘К сожалению, вам доступ закрыт.’;
return false;
}

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *