summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2015-09-11 22:01:46 +0200
committerLukas Fleischer <lfleischer@archlinux.org>2015-09-11 22:18:31 +0200
commitee9a8f232b960c5bfad7376f129710d19871edcc (patch)
treeb465103e658ef3d3be813689f2d745eda1ce1506
parentc5014b0752d2544cfb04522bda164e89246702bd (diff)
downloadaurweb-ee9a8f232b960c5bfad7376f129710d19871edcc.tar.xz
Allow for logging in via email address
Accept both user names and email addresses in the login prompt. Suggested-by: Johannes Löthberg <johannes@kyriasis.com> Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
-rw-r--r--web/html/login.php2
-rw-r--r--web/lib/acctfuncs.inc.php2
-rw-r--r--web/lib/aur.inc.php15
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 foo@example.com format