class UcbGroups::MembershipFilter

Attributes

groups[RW]
namespace[RW]
orgs[RW]

Public Class Methods

new(namespace, groups, orgs) click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 5
def initialize(namespace, groups, orgs)
  @namespace = namespace
  @groups = groups
  @orgs = orgs
end

Public Instance Methods

to_s() click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 11
def to_s
  @filter ||= begin
    if groups.empty?
      objectclass_filter & orgs_filter
    elsif orgs.empty?
      objectclass_filter & groups_filter
    else
      objectclass_filter & (groups_filter & orgs_filter)
    end
  end
  @filter.to_rfc2254
end

Private Instance Methods

group_filter(group) click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 35
def group_filter(group)
  Net::LDAP::Filter.
      eq("ismemberof",
         "cn=edu:berkeley:app:#{self.namespace}:#{group},ou=campus groups,dc=berkeley,dc=edu")
end
groups_filter() click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 30
def groups_filter
  groups.map    { |group| group_filter(group) }
        .reduce { |accum, filter| accum.send("|", filter) }
end
objectclass_filter() click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 26
def objectclass_filter
  Net::LDAP::Filter.eq("objectclass", "person")
end
org_filter(org) click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 46
def org_filter(org)
  Net::LDAP::Filter.eq("berkeleyedudeptunithierarchystring", "*#{org}*")
end
orgs_filter() click to toggle source
# File lib/ucb_groups/membership_filter.rb, line 41
def orgs_filter
  @orgs.map    { |org| org_filter(org) }
       .reduce { |accum, filter| accum.send("|", filter) }
end