class LdapFluff::GenericMemberService
Attributes
ldap[RW]
Public Class Methods
new(ldap, config)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 7 def initialize(ldap, config) @ldap = ldap @base = config.base_dn @group_base = (config.group_base.empty? ? config.base_dn : config.group_base) begin @search_filter = Net::LDAP::Filter.construct(config.search_filter) unless (config.search_filter.nil? || config.search_filter.empty?) rescue Net::LDAP::LdapError => error puts "Search filter unavailable - #{error}" end end
Public Instance Methods
find_by_dn(dn)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 24 def find_by_dn(dn) entry, base = dn.split(/(?<!\),/, 2) entry_attr, entry_value = entry.split('=', 2) entry_value = entry_value.gsub('\,', ',') user = @ldap.search(:filter => name_filter(entry_value, entry_attr), :base => base) raise self.class::UIDNotFoundException if (user.nil? || user.empty?) user end
find_group(gid)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 33 def find_group(gid) group = @ldap.search(:filter => group_filter(gid), :base => @group_base) raise self.class::GIDNotFoundException if (group.nil? || group.empty?) group end
find_user(uid)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 18 def find_user(uid) user = @ldap.search(:filter => name_filter(uid)) raise self.class::UIDNotFoundException if (user.nil? || user.empty?) user end
get_groups(grouplist)
click to toggle source
extract the group names from the LDAP style response, return string will be something like CN=bros,OU=bropeeps,DC=jomara,DC=redhat,DC=com
# File lib/ldap_fluff/generic_member_service.rb, line 56 def get_groups(grouplist) grouplist.map(&:downcase).collect { |g| g.sub(/.*?cn=(.*?),.*/, '\1') } end
get_login_from_entry(entry)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 72 def get_login_from_entry(entry) [@attr_login, 'uid', 'cn'].each do |attribute| return entry.send(attribute) if entry.respond_to? attribute end nil end
get_logins(userlist)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 60 def get_logins(userlist) userlist.map(&:downcase!) [@attr_login, 'uid', 'cn'].map do |attribute| logins = userlist.collect { |g| g.sub(/.*?#{attribute}=(.*?),.*/, '\1') } if logins == userlist nil else logins end end.uniq.compact.flatten end
group_filter(gid)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 49 def group_filter(gid) Net::LDAP::Filter.eq("cn", gid) end
name_filter(uid, attr = @attr_login)
click to toggle source
# File lib/ldap_fluff/generic_member_service.rb, line 39 def name_filter(uid, attr = @attr_login) filter = Net::LDAP::Filter.eq(attr, uid) if @search_filter.nil? filter else filter & @search_filter end end