From 48c82e520a051cd9eadd29940097eaf73b3a8b2f Mon Sep 17 00:00:00 2001 From: Matt Todd Date: Tue, 19 Aug 2014 17:39:47 -0700 Subject: [PATCH 1/3] Add failing test for member_filter usage without uid As in, a Net::LDAP::Entry with empty value for the UID. --- test/filter_test.rb | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/test/filter_test.rb b/test/filter_test.rb index 39e9143..0fff2ce 100644 --- a/test/filter_test.rb +++ b/test/filter_test.rb @@ -32,6 +32,12 @@ def test_member_equal @subject.member_filter(@entry).to_s end + def test_member_without_uid + @entry.uid = nil + assert_equal "(|(member=#{@me})(uniqueMember=#{@me}))", + @subject.member_filter(@entry).to_s + end + def test_groups_reduced assert_equal "(|(cn=Enterprise)(cn=People))", @subject.group_filter(%w(Enterprise People)).to_s From 09f1a82ce3be53697899fa969c8397c60bceda7f Mon Sep 17 00:00:00 2001 From: Matt Todd Date: Tue, 19 Aug 2014 17:49:47 -0700 Subject: [PATCH 2/3] Conditionally amend filter if uids present --- lib/github/ldap/filter.rb | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/lib/github/ldap/filter.rb b/lib/github/ldap/filter.rb index 87173ef..f11934d 100644 --- a/lib/github/ldap/filter.rb +++ b/lib/github/ldap/filter.rb @@ -26,10 +26,17 @@ def group_filter(group_names) # Returns a Net::LDAP::Filter. def member_filter(entry = nil, uid_attr = @ldap.uid) if entry - MEMBERSHIP_NAMES.map {|n| Net::LDAP::Filter.eq(n, entry.dn) }. - reduce(:|) | - entry[uid_attr]. map { |uid| Net::LDAP::Filter.eq("memberUid", uid) }. - reduce(:|) + filter = + MEMBERSHIP_NAMES. map {|n| Net::LDAP::Filter.eq(n, entry.dn) }. + reduce(:|) + + if !entry[uid_attr].empty? + filter |= + entry[uid_attr].map { |uid| Net::LDAP::Filter.eq("memberUid", uid) }. + reduce(:|) + end + + filter else (MEMBERSHIP_NAMES + %w(memberUid)). map {|n| Net::LDAP::Filter.pres(n)}.reduce(:|) From ba19f3fe5633750ba5e8ca5000dca5454cf816d8 Mon Sep 17 00:00:00 2001 From: Matt Todd Date: Tue, 19 Aug 2014 17:51:30 -0700 Subject: [PATCH 3/3] Bump version to 1.3.1 --- github-ldap.gemspec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/github-ldap.gemspec b/github-ldap.gemspec index b62fcb0..dd04392 100644 --- a/github-ldap.gemspec +++ b/github-ldap.gemspec @@ -2,7 +2,7 @@ Gem::Specification.new do |spec| spec.name = "github-ldap" - spec.version = "1.3.0" + spec.version = "1.3.1" spec.authors = ["David Calavera"] spec.email = ["david.calavera@gmail.com"] spec.description = %q{Ldap authentication for humans}