aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-05-02 14:51:01 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2016-05-02 14:51:01 +0200
commit7aca13f14c2974a5e3f78cff628209c3964aaf04 (patch)
tree1d4ca6c26c5dd9eeca66ed54d6d5406642796d54
parentb10dcfc3b7e84c97d4dba4f7c63b4dff2fbc310b (diff)
downloadnextcloud-server-7aca13f14c2974a5e3f78cff628209c3964aaf04.tar.gz
nextcloud-server-7aca13f14c2974a5e3f78cff628209c3964aaf04.zip
Allow login by email address
-rw-r--r--core/templates/login.php4
-rw-r--r--lib/private/legacy/user.php14
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();