From: mkanat%bugzilla.org <> Date: Fri, 14 Dec 2007 23:40:57 +0000 (+0000) Subject: Bug 229049: Make LDAP authentication work when there are multiple mail= attributes... X-Git-Tag: bugzilla-3.1.3~429 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7cf695517efa17b200f31ed4c934af8839153e44;p=thirdparty%2Fbugzilla.git Bug 229049: Make LDAP authentication work when there are multiple mail= attributes for an account. Patch By Emmanuel Seyman r=mkanat, a=mkanat --- diff --git a/Bugzilla/Auth/Verify/LDAP.pm b/Bugzilla/Auth/Verify/LDAP.pm index 0176abdcb3..b8dff397f6 100644 --- a/Bugzilla/Auth/Verify/LDAP.pm +++ b/Bugzilla/Auth/Verify/LDAP.pm @@ -37,6 +37,7 @@ use fields qw( use Bugzilla::Constants; use Bugzilla::Error; +use Bugzilla::User; use Bugzilla::Util; use Net::LDAP; @@ -90,7 +91,22 @@ sub check_credentials { details => {attr => $mail_attr} }; } - $params->{bz_username} = $user_entry->get_value($mail_attr); + my @emails = $user_entry->get_value($mail_attr); + + # Default to the first email address returned. + $params->{bz_username} = $emails[0]; + + if (@emails > 1) { + # Cycle through the adresses and check if they're Bugzilla logins. + # Use the first one that returns a valid id. + foreach my $email (@emails) { + if ( login_to_id($email) ) { + $params->{bz_username} = $email; + last; + } + } + } + } else { $params->{bz_username} = $username; }