Используемая мной Active Directory LDAP сохраняет имя и фамилию отдельно, а также имеет предпочтительное имя для хранения предпочтительного имени.
Скажем, у нас есть два человека с одним именем: Atom Electron
Оба имеют
firstname=Atom
lastname=Electron
Но каждый из них устанавливает предпочитаемое имя по-разному:
preferedname=Atomic Electron
(user_id = 12)
preferedname=Atom Electron
(user_id = 13)
Мой фильтр LDAP в данный момент:
q = "query string"
filter_preferredname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('preferredname', "*#{w}*") }.inject(:&)
filter_firstname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('firstname', "*#{w}*") }.inject(:&)
filter_lastname_match_q = q.split(' ').map { |w| Net::LDAP::Filter.eq('lastname', "*#{w}*") }.inject(:&)
filter = filter_emplid_present & (
filter_preferredname_match_q |
filter_firstname_match_q |
filter_lastname_match_q
)
, но это не работает нормально: если пользователь ищет Atomic Electron
, он покажет только один результат, но я хочу, чтобы он показывал как пользователя 12, так и 13
.
Как мне заставить ldap сначала объединить имя и фамилию в базе данных LDAP Active Directory, а затем разрешить запросить полученную строку?
Спасибо!