# File lib/ldap_fluff/generic.rb, line 4 def initialize(config = {}) @ldap = Net::LDAP.new(:host => config.host, :base => config.base_dn, :port => config.port, :encryption => config.encryption) @bind_user = config.service_user @bind_pass = config.service_pass @anon = config.anon_queries @attr_login = config.attr_login @base = config.base_dn @group_base = (config.group_base.empty? ? config.base_dn : config.group_base) @member_service = self.class::MemberService.new(@ldap, config) end
# File lib/ldap_fluff/generic.rb, line 26 def group_exists?(gid) service_bind @member_service.find_group(gid) true rescue self.class::MemberService::GIDNotFoundException false end
# File lib/ldap_fluff/generic.rb, line 34 def groups_for_uid(uid) service_bind @member_service.find_user_groups(uid) rescue self.class::MemberService::UIDNotFoundException return [] end
# File lib/ldap_fluff/generic.rb, line 52 def includes_cn?(cn) filter = Net::LDAP::Filter.eq('cn', cn) @ldap.search(:base => @ldap.base, :filter => filter).present? end
# File lib/ldap_fluff/generic.rb, line 57 def service_bind unless @anon || bind?(@bind_user, @bind_pass, :search => false) raise UnauthenticatedException, "Could not bind to #{class_name} user #{@bind_user}" end end
# File lib/ldap_fluff/generic.rb, line 18 def user_exists?(uid) service_bind @member_service.find_user(uid) true rescue self.class::MemberService::UIDNotFoundException false end
# File lib/ldap_fluff/generic.rb, line 41 def users_for_gid(gid) return [] unless group_exists?(gid) search = @member_service.find_group(gid).last method = [:member, :ismemberof, :memberof, :memberuid, :uniquemember].find { |m| search.respond_to? m } or raise 'Group does not have any members' users_from_search_results(search, method) end
# File lib/ldap_fluff/generic.rb, line 65 def class_name self.class.name.split('::').last end
# File lib/ldap_fluff/generic.rb, line 69 def users_from_search_results(search, method) members = search.send method if method == :memberuid # memberuid contains an array ['user1','user2'], no need to parse it members else @member_service.get_logins(members) end end