Commit c59d1fbb authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch 'case-insensitive-group-member' into 'master'

Ignore case of LDAP user DN when checking group membership.

Fixes #254.

See merge request !336
parents 1a0ce115 54b0c787
...@@ -15,6 +15,7 @@ v 7.9.0 (unreleased) ...@@ -15,6 +15,7 @@ v 7.9.0 (unreleased)
- Fix mass-unassignment of issues (Robert Speicher) - Fix mass-unassignment of issues (Robert Speicher)
- Allow user confirmation to be skipped for new users via API - Allow user confirmation to be skipped for new users via API
- Add a service to send updates to an Irker gateway (Romain Coltel) - Add a service to send updates to an Irker gateway (Romain Coltel)
- Ignore case of LDAP user DN when checking group membership.
v 7.8.1 v 7.8.1
- Fix run of custom post receive hooks - Fix run of custom post receive hooks
......
...@@ -34,9 +34,12 @@ module Gitlab ...@@ -34,9 +34,12 @@ module Gitlab
end end
def has_member?(user) def has_member?(user)
user_uid = user.uid.downcase
user_dn = user.dn.downcase
if memberuid? if memberuid?
member_uids.include?(user.uid) member_uids.any? { |member_uid| member_uid.downcase == user_uid }
elsif member_dns.include?(user.dn) elsif member_dns.any? { |member_dn| member_dn.downcase == user_dn }
true true
elsif adapter.config.active_directory elsif adapter.config.active_directory
adapter.dn_matches_filter?(user.dn, active_directory_recursive_memberof_filter) adapter.dn_matches_filter?(user.dn, active_directory_recursive_memberof_filter)
......
...@@ -293,8 +293,8 @@ objectclass: posixGroup ...@@ -293,8 +293,8 @@ objectclass: posixGroup
cn: group1 cn: group1
description: GitLab group 1 description: GitLab group 1
gidnumber: 21 gidnumber: 21
memberuid: #{ldap_user.uid} uniquemember: #{ldap_user.dn.downcase}
memberuid: user2 uniquemember: uid=user2,ou=people,dc=example
objectclass: top objectclass: top
objectclass: posixGroup objectclass: posixGroup
}) })
...@@ -321,7 +321,8 @@ objectclass: posixGroup ...@@ -321,7 +321,8 @@ objectclass: posixGroup
before do before do
access.stub(ldap_user: ldap_user) access.stub(ldap_user: ldap_user)
ldap_user.stub(:uid) { 'user42' } ldap_user.stub(:uid) { 'user1' }
ldap_user.stub(:dn) { 'uid=user1,ou=People,dc=example' }
end end
it "only returns ldap cns to which the user has access" do it "only returns ldap cns to which the user has access" do
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment