diff options
-rw-r--r-- | Bugzilla/Auth/Verify/LDAP.pm | 18 |
1 files changed, 17 insertions, 1 deletions
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; } |