Class: Origen::Users::LDAP
Overview
Interface to talk to a company’s LDAP-based employee directory, an instance of this class is available at Origen.ldap
This provides APIs to lookup public information about any user (email, phone number, etc)
Constant Summary collapse
- SERVICE_ACCOUNT =
Origen.site_config.ldap_username
- SERVICE_PASS =
Origen.site_config.ldap_password
- HOST =
Origen.site_config.ldap_host
- PORT =
Origen.site_config.ldap_port
- BASE_DN =
Origen.site_config.ldap_base_dn
- LDAP_ENCRYPTION =
'simple_tls'
Instance Method Summary collapse
- #available? ⇒ Boolean
-
#display(user_or_id = Origen.current_user) ⇒ Object
Prints out the information available for the given core, this is useful to work out the name of the information that you want to pull from the object returned from lookup.
-
#lookup(user_or_id = Origen.current_user) ⇒ Object
Lookup the given user in the core directory and return an object representing the user’s entry in the FSL application directory, run the display method from the console to see the field names and what information is available.
Instance Method Details
#available? ⇒ Boolean
24 25 26 |
# File 'lib/origen/users/ldap.rb', line 24 def available? !!(SERVICE_ACCOUNT && SERVICE_PASS && HOST && PORT && BASE_DN && LDAP_ENCRYPTION) end |
#display(user_or_id = Origen.current_user) ⇒ Object
Prints out the information available for the given core, this is useful to work out the name of the information that you want to pull from the object returned from lookup
47 48 49 50 51 52 53 54 |
# File 'lib/origen/users/ldap.rb', line 47 def display(user_or_id = Origen.current_user) lookup(user_or_id).each do |attribute, values| puts " #{attribute}:" values.each do |value| puts " --->#{value}" end end end |
#lookup(user_or_id = Origen.current_user) ⇒ Object
Lookup the given user in the core directory and return an object representing the user’s entry in the FSL application directory, run the display method from the console to see the field names and what information is available. The record for the given user will be cached the first time it is generated, so this method can be repeatedly called from the same thread without incurring a remote fetch each time.
entry = Origen.fsl.lookup("r49409")
entry.mail # => [email protected]
36 37 38 39 40 41 42 43 |
# File 'lib/origen/users/ldap.rb', line 36 def lookup(user_or_id = Origen.current_user) id = id(user_or_id) unless instance_variable_defined?("@#{id.downcase}") record = service.search(base: BASE_DN, filter: "#{Origen.site_config.ldap_user_id_attribute || 'id'}=#{id}").first instance_variable_set("@#{id.downcase}", record) end instance_variable_get("@#{id.downcase}") end |