Class: LdapDisambiguate::LdapUser
- Inherits:
-
Object
- Object
- LdapDisambiguate::LdapUser
- Defined in:
- lib/ldap_disambiguate/ldap_user.rb
Overview
This class provides an api for quering LDAP with different portions of the user’s information (name parts or id)
Class Method Summary collapse
- .directory_attributes(login, attrs = []) ⇒ Object
- .get_users(name_filter, attrs = []) ⇒ Object
- .query_ldap_by_mail(email, attrs = []) ⇒ Object
- .query_ldap_by_name(given_name, surname, attrs = []) ⇒ Object
- .results_hash(opts) ⇒ Object
Class Method Details
.directory_attributes(login, attrs = []) ⇒ Object
8 9 10 11 12 |
# File 'lib/ldap_disambiguate/ldap_user.rb', line 8 def directory_attributes(login, attrs = []) filter = Net::LDAP::Filter.eq('uid', login) result = get_ldap_response(filter, attrs) format_users(result, attrs) end |
.get_users(name_filter, attrs = []) ⇒ Object
32 33 34 35 36 |
# File 'lib/ldap_disambiguate/ldap_user.rb', line 32 def get_users(name_filter, attrs = []) attrs = (attrs + default_attributes).uniq filter = Net::LDAP::Filter.construct("(& (& #{name_filter}) #{person_filter})") get_ldap_response(filter, attrs) end |
.query_ldap_by_mail(email, attrs = []) ⇒ Object
14 15 16 17 18 |
# File 'lib/ldap_disambiguate/ldap_user.rb', line 14 def query_ldap_by_mail(email, attrs = []) filter = Net::LDAP::Filter.construct("(& (| (psmailid=#{email} ) (mail=#{email}) (psmailbox=#{email}) (edupersonprincipalname=#{email})) #{person_filter})") users = get_users(filter, attrs) format_users(users, attrs) end |
.query_ldap_by_name(given_name, surname, attrs = []) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/ldap_disambiguate/ldap_user.rb', line 20 def query_ldap_by_name(given_name, surname, attrs = []) return [] if given_name.blank? # this method only work if we have a first name to play with first_names = given_name.split(/[\s.]+/) users = [] name_filters(first_names[0], first_names[1], surname).each do |filter| users = get_users(filter, attrs) break if users.count > 0 # stop running through the filters if we get results end format_users(users, attrs) end |
.results_hash(opts) ⇒ Object
38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ldap_disambiguate/ldap_user.rb', line 38 def results_hash(opts) { id: fetch(opts, :uid).first, given_name: fetch(opts, :givenname).first, surname: fetch(opts, :sn).first, email: fetch(opts, :mail).first, affiliation: fetch(opts, :eduPersonPrimaryAffiliation, []), displayname: fetch(opts, :displayname).first } end |