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