From 7cf695517efa17b200f31ed4c934af8839153e44 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Fri, 14 Dec 2007 23:40:57 +0000 Subject: Bug 229049: Make LDAP authentication work when there are multiple mail= attributes for an account. Patch By Emmanuel Seyman r=mkanat, a=mkanat --- Bugzilla/Auth/Verify/LDAP.pm | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/Bugzilla/Auth/Verify/LDAP.pm b/Bugzilla/Auth/Verify/LDAP.pm index 0176abdcb..b8dff397f 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; } -- cgit v1.2.3-24-g4f1b