class LdapFluff::Posix::MemberService
handles the naughty bits of posix ldap
Public Class Methods
new(ldap, config)
click to toggle source
Calls superclass method
LdapFluff::GenericMemberService::new
# File lib/ldap_fluff/posix_member_service.rb, line 5 def initialize(ldap, config) @attr_login = (config.attr_login || 'memberuid') @use_rfc4519_group_membership = config.use_rfc4519_group_membership super end
Public Instance Methods
find_user(uid, base_dn = @base)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 11 def find_user(uid, base_dn = @base) user = @ldap.search(:filter => name_filter(uid), :base => base_dn) raise UIDNotFoundException if (user.nil? || user.empty?) user end
find_user_groups(uid)
click to toggle source
return an ldap user with groups attached note : this method is not particularly fast for large ldap systems
# File lib/ldap_fluff/posix_member_service.rb, line 19 def find_user_groups(uid) user = find_user(uid).first @ldap.search( :filter => user_group_filter(uid, user[:dn].first), :base => @group_base, :attributes => ["cn"] ).map { |entry| entry[:cn][0] } end
Private Instance Methods
user_group_filter(uid, user_dn)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 35 def user_group_filter(uid, user_dn) by_member = Net::LDAP::Filter.eq('memberuid', uid) return by_member unless @use_rfc4519_group_membership by_name = Net::LDAP::Filter.eq('member', user_dn) & Net::LDAP::Filter.eq('objectClass', 'groupOfNames') by_unique_name = Net::LDAP::Filter.eq('uniquemember', user_dn) & Net::LDAP::Filter.eq('objectClass', 'groupOfUniqueNames') by_member | by_name | by_unique_name end