summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Auth/Verify/LDAP.pm18
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;
}