class LdapFluff::Posix::MemberService
handles the naughty bits of posix ldap
Attributes
ldap[RW]
Public Class Methods
new(ldap, group_base)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 8 def initialize(ldap, group_base) @ldap = ldap @group_base = group_base end
Public Instance Methods
find_group(gid)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 29 def find_group(gid) group = @ldap.search(:filter => group_filter(gid), :base => @group_base) raise GIDNotFoundException if (group.nil? || group.empty?) group end
find_user(uid)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 23 def find_user(uid) user = @ldap.search(:filter => name_filter(uid), :base => @group_base) 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 15 def find_user_groups(uid) groups = [] find_user(uid).each do |entry| groups << entry[:cn][0] end groups end
group_filter(cn)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 49 def group_filter(cn) Net::LDAP::Filter.eq("cn", cn) end
merge_filters(filters = [], all = false)
click to toggle source
AND or OR all of the filters together
# File lib/ldap_fluff/posix_member_service.rb, line 54 def merge_filters(filters = [], all = false) if !filters.nil? && filters.size >= 1 filter = filters[0] filters[1..(filters.size - 1)].each do |gfilter| filter = (all ? filter & gfilter : filter | gfilter) end return filter end end
name_filter(uid)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 45 def name_filter(uid) Net::LDAP::Filter.eq("memberUid", uid) end
times_in_groups(uid, gids, all)
click to toggle source
# File lib/ldap_fluff/posix_member_service.rb, line 35 def times_in_groups(uid, gids, all) filters = [] gids.each do |cn| filters << group_filter(cn) end group_filters = merge_filters(filters, all) filter = name_filter(uid) & group_filters @ldap.search(:base => @group_base, :filter => filter).size end