class PsuDir::LdapUser

Public Class Methods

check_ldap_exist!(login) click to toggle source
# File lib/psu_dir/ldap_user.rb, line 10
def check_ldap_exist!(login)
  return false if login.blank?
  retry_if { Hydra::LDAP.does_user_exist?(Net::LDAP::Filter.eq('uid', login)) } || false
end
filter_for(*people) click to toggle source
# File lib/psu_dir/ldap_user.rb, line 15
def filter_for(*people)
  return '' if people.empty?
  '(| ' + people.map { |p| "(eduPersonPrimaryAffiliation=#{p.to_s.upcase})" }.join(' ') + ')))'
end
get_groups(login) click to toggle source
# File lib/psu_dir/ldap_user.rb, line 5
def get_groups(login)
  return [] if login.blank?
  retry_if { parse_ldap_groups(group_response_from_ldap(login)) } || []
end

Private Class Methods

group_response_from_ldap(login) click to toggle source

Response from LDAP We have to pass a block, see github.com/projecthydra-labs/hydra-ldap/issues/8

# File lib/psu_dir/ldap_user.rb, line 31
def group_response_from_ldap(login)
  Hydra::LDAP.groups_for_user(Net::LDAP::Filter.eq('uid', login)) { |r| r }
end
parse_ldap_groups(result) click to toggle source
# File lib/psu_dir/ldap_user.rb, line 22
def parse_ldap_groups(result)
  return [] if result.empty?
  result.first[:psmemberof].select { |y| y.start_with? 'cn=umg/' }.map do |x|
    x.sub(/^cn=/, '').sub(/,dc=psu,dc=edu/, '')
  end
end