diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-05-02 14:51:01 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2016-05-02 14:51:01 +0200 |
commit | 7aca13f14c2974a5e3f78cff628209c3964aaf04 (patch) | |
tree | 1d4ca6c26c5dd9eeca66ed54d6d5406642796d54 | |
parent | b10dcfc3b7e84c97d4dba4f7c63b4dff2fbc310b (diff) | |
download | nextcloud-server-7aca13f14c2974a5e3f78cff628209c3964aaf04.tar.gz nextcloud-server-7aca13f14c2974a5e3f78cff628209c3964aaf04.zip |
Allow login by email address
-rw-r--r-- | core/templates/login.php | 4 | ||||
-rw-r--r-- | lib/private/legacy/user.php | 14 |
2 files changed, 13 insertions, 5 deletions
diff --git a/core/templates/login.php b/core/templates/login.php index 8405bac6890..86c186928cc 100644 --- a/core/templates/login.php +++ b/core/templates/login.php @@ -40,11 +40,11 @@ script('core', [ </div> <p class="grouptop"> <input type="text" name="user" id="user" - placeholder="<?php p($l->t('Username')); ?>" + placeholder="<?php p($l->t('Username or email')); ?>" value="<?php p($_['loginName']); ?>" <?php p($_['user_autofocus'] ? 'autofocus' : ''); ?> autocomplete="on" autocapitalize="off" autocorrect="off" required> - <label for="user" class="infield"><?php p($l->t('Username')); ?></label> + <label for="user" class="infield"><?php p($l->t('Username or email')); ?></label> </p> <p class="groupbottom"> diff --git a/lib/private/legacy/user.php b/lib/private/legacy/user.php index 11c35daa0de..78eb4bab126 100644 --- a/lib/private/legacy/user.php +++ b/lib/private/legacy/user.php @@ -152,14 +152,22 @@ class OC_User { /** * Try to login a user * - * @param string $loginname The login name of the user to log in + * @param string $loginName The login name of the user to log in * @param string $password The password of the user * @return boolean|null * * Log in a user and regenerate a new session - if the password is ok */ - public static function login($loginname, $password) { - $result = self::getUserSession()->login($loginname, $password); + public static function login($loginName, $password) { + + $result = self::getUserSession()->login($loginName, $password); + if (!$result) { + $users = \OC::$server->getUserManager()->getByEmail($loginName); + // we only allow login by email if unique + if (count($users) === 1) { + $result = self::getUserSession()->login($users[0]->getUID(), $password); + } + } if ($result) { // Refresh the token \OC::$server->getCsrfTokenManager()->refreshToken(); |