Accept both user names and email addresses in the login prompt.

Signed-off-by: Lukas Fleischer <[email protected]>
---
 web/html/login.php        |  2 +-
 web/lib/acctfuncs.inc.php |  2 +-
 web/lib/aur.inc.php       | 15 +++++++++++++++
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/web/html/login.php b/web/html/login.php
index ab7bac9..cef9be4 100644
--- a/web/html/login.php
+++ b/web/html/login.php
@@ -28,7 +28,7 @@ html_header('AUR ' . __("Login"));
                        <ul class="errorlist"><li><?= $login_error ?></li></ul>
                        <?php endif; ?>
                        <p>
-                               <label for="id_username"><?= __('Username') . 
':'; ?></label>
+                               <label for="id_username"><?= __('User name or 
email address') . ':'; ?></label>
                                <input id="id_username" type="text" name="user" 
size="30" maxlength="<?= config_get_int('options', 'username_max_len'); ?>" 
value="<?php if (isset($_POST['user'])) { print 
htmlspecialchars($_POST['user'], ENT_QUOTES); } ?>" autofocus="autofocus" />
                        </p>
                        <p>
diff --git a/web/lib/acctfuncs.inc.php b/web/lib/acctfuncs.inc.php
index ee8f0e3..756c847 100644
--- a/web/lib/acctfuncs.inc.php
+++ b/web/lib/acctfuncs.inc.php
@@ -479,7 +479,7 @@ function try_login() {
        }
 
        $dbh = DB::connect();
-       $userID = uid_from_username($_REQUEST['user']);
+       $userID = uid_from_loginname($_REQUEST['user']);
 
        if (user_suspended($userID)) {
                $login_error = __('Account suspended');
diff --git a/web/lib/aur.inc.php b/web/lib/aur.inc.php
index 7d65913..9015ae8 100644
--- a/web/lib/aur.inc.php
+++ b/web/lib/aur.inc.php
@@ -467,6 +467,21 @@ function uid_from_username($username) {
 }
 
 /**
+ * Determine the user's ID in the database using a username or email address
+ *
+ * @param string $username The username or email address of an account
+ *
+ * @return string Return user ID if exists, otherwise null
+ */
+function uid_from_loginname($loginname) {
+       $uid = uid_from_username($loginname);
+       if (!$uid) {
+               $uid = uid_from_email($loginname);
+       }
+       return $uid;
+}
+
+/**
  * Determine the user's ID in the database using an e-mail address
  *
  * @param string $email An e-mail address in [email protected] format
-- 
2.5.1

Reply via email to