Я работаю над проектом с использованием библиотеки PHP Adldap2 (https://github.com/Adldap2/Adldap2) и мне нужно получить список подразделений в определенном подразделении из Active Directory.
Вот что я попробовал:
$ad->search()
->whereEquals(
ActiveDirectory::OBJECT_CATEGORY,
ActiveDirectory::ORGANIZATIONAL_UNIT_LONG
)
->whereEndsWith('dn', 'OU=myou,DC=mycompany,DC=com')
->get();
В то время как первый фильтр работает и извлекает все OU, второй нет и возвращает пустой массив. Я также пытался использовать 'distinguishedname'
вместо 'dn'
в whereEndsWith
с тем же результатом.
Как это может быть сделано?
Проведя некоторые исследования и эксперименты, я разработал следующий код:
$config = Adldap::getConfiguration();
$baseDn = new Adldap\Objects\DistinguishedName($config->getBaseDn());
$departmentsDn = $baseDn->addOu('myou');
$search = Adldap::search()->setDn($departmentsDn->get());
$entries = $search->whereEquals(ActiveDirectory::OBJECT_CATEGORY, ActiveDirectory::ORGANIZATIONAL_UNIT_LONG)->get();
Я не уверен, что это лучшее решение, но оно работает.
PS: я использую Laravel Adldap фасад, поэтому Adldap звонки являются статическими.
Других решений пока нет …