class LdapFluff::ActiveDirectory::MemberService

Naughty bits of active directory ldap queries

Public Class Methods

new(ldap, config) click to toggle source
Calls superclass method LdapFluff::GenericMemberService.new
# File lib/ldap_fluff/ad_member_service.rb, line 6
def initialize(ldap, config)
  @attr_login = (config.attr_login || 'samaccountname')
  super
end

Public Instance Methods

_groups_from_ldap_data(payload) click to toggle source

return the :memberof attrs + parents, recursively

# File lib/ldap_fluff/ad_member_service.rb, line 19
def _groups_from_ldap_data(payload)
  data = []
  if !payload.nil?
    first_level  = get_groups(payload[:memberof])
    total_groups = _walk_group_ancestry(first_level)
    data         = (first_level + total_groups).uniq
  end
  data
end
_walk_group_ancestry(gids = []) click to toggle source

recursively loop over the parent list

# File lib/ldap_fluff/ad_member_service.rb, line 30
def _walk_group_ancestry(gids = [])
  set = []
  gids.each do |g|
    filter = group_filter(g) & class_filter
    search = @ldap.search(:filter => filter, :base => @group_base)
    if !search.nil? && !search.first.nil?
      group = search.first
      set  += get_groups(group[:memberof])
      set  += _walk_group_ancestry(set)
    end
  end
  set
end
class_filter() click to toggle source
# File lib/ldap_fluff/ad_member_service.rb, line 44
def class_filter
  Net::LDAP::Filter.eq("objectclass", "group")
end
find_user_groups(uid) click to toggle source

get a list [] of ldap groups for a given user in active directory, this means a recursive lookup

# File lib/ldap_fluff/ad_member_service.rb, line 13
def find_user_groups(uid)
  data = find_user(uid)
  _groups_from_ldap_data(data.first)
end