Skip to content

Commit 5c13679

Browse files
committed
Add helper to search entries by domain.
1 parent 409769f commit 5c13679

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

lib/github/ldap/domain.rb

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ def group_filter(group_names)
3636
def groups(group_names)
3737
filter = group_filter(group_names)
3838

39-
@connection.search(base: @base_name,
40-
attributes: %w{ou cn dn sAMAccountName member},
41-
filter: filter)
39+
search(attributes: %w{ou cn dn sAMAccountName member}, filter: filter)
4240
end
4341

4442
# List the groups that a user is member of.
@@ -51,9 +49,7 @@ def membership(user_dn, group_names)
5149
or_filters = group_names.map {|g| Net::LDAP::Filter.eq("cn", g)}.reduce(:|)
5250
member_filter = Net::LDAP::Filter.eq("member", user_dn) & or_filters
5351

54-
@connection.search(base: @base_name,
55-
attributes: %w{ou cn dn sAMAccountName member},
56-
filter: member_filter)
52+
search(attributes: %w{ou cn dn sAMAccountName member}, filter: member_filter)
5753
end
5854

5955
# Check if the user is include in any of the configured groups.
@@ -103,6 +99,19 @@ def authenticate!(login, password, group_names = nil)
10399

104100
return user if user && is_member?(user.dn, group_names)
105101
end
102+
103+
# Search entries using this domain as base.
104+
#
105+
# options: is a Hash with the options for the search.
106+
# The base option is always overriden.
107+
#
108+
# Returns an array with the entries found.
109+
# Returns nil if there are no entries.
110+
def search(options)
111+
options[:base] = @base_name
112+
113+
@connection.search(options)
114+
end
106115
end
107116
end
108117
end

test/domain_test.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,5 +87,18 @@ def test_membership_groups_for_members
8787
assert_equal 1, groups.size
8888
assert_equal 'cn=Enterprise,ou=Group,dc=github,dc=com', groups.first.dn
8989
end
90+
91+
def test_search
92+
assert 1, @domain.search(
93+
attributes: %w(uid),
94+
filter: Net::LDAP::Filter.eq('uid', 'calavera')).size
95+
end
96+
97+
def test_search_override_base_name
98+
assert 1, @domain.search(
99+
base: "this base name is incorrect",
100+
attributes: %w(uid),
101+
filter: Net::LDAP::Filter.eq('uid', 'calavera')).size
102+
end
90103
end
91104

0 commit comments

Comments
 (0)