]> source.dussan.org Git - redmine.git/commitdiff
Fixed that Redmine.pm does not support "bind as user" ldap authentication (#11046).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 3 Jun 2012 08:49:46 +0000 (08:49 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sun, 3 Jun 2012 08:49:46 +0000 (08:49 +0000)
Patch contributed by Adi Kriegisch.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9755 e93f8b46-1217-0410-a6f0-8f06a7374b81

extra/svn/Redmine.pm

index 3125d510ee662046e48ad838836277b954c4c987..fbaf177a3cf54626233a6404fa2522d04830a701 100644 (file)
@@ -366,12 +366,19 @@ sub is_member {
           );
           $sthldap->execute($auth_source_id);
           while (my @rowldap = $sthldap->fetchrow_array) {
+            my $bind_as = $rowldap[3] ? $rowldap[3] : "";
+            my $bind_pw = $rowldap[4] ? $rowldap[4] : "";
+            if ($bind_as =~ m/\$login/) {
+              # replace $login with $redmine_user and use $redmine_pass
+              $bind_as =~ s/\$login/$redmine_user/g;
+              $bind_pw = $redmine_pass
+            }
             my $ldap = Authen::Simple::LDAP->new(
                 host    =>      ($rowldap[2] eq "1" || $rowldap[2] eq "t") ? "ldaps://$rowldap[0]:$rowldap[1]" : $rowldap[0],
                 port    =>      $rowldap[1],
                 basedn  =>      $rowldap[5],
-                binddn  =>      $rowldap[3] ? $rowldap[3] : "",
-                bindpw  =>      $rowldap[4] ? $rowldap[4] : "",
+                binddn  =>      $bind_as,
+                bindpw  =>      $bind_pw,
                 filter  =>      "(".$rowldap[6]."=%s)"
             );
             my $method = $r->method;