Как искать 2 атрибута (имя и фамилия), объединенные в ldap? - PullRequest
0 голосов
/ 01 ноября 2018

Используемая мной 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, а затем разрешить запросить полученную строку?

Спасибо!

...