Login via Email Address is handled by the LoginController

Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
Joas Schilling
2019-01-11 17:06:16 +01:00
parent b3565eda6c
commit 8c5e80b21d

View File

@@ -52,39 +52,21 @@ class OC_User_IMAP extends \OCA\user_external\Base {
$uid = str_replace("%40","@",$uid); $uid = str_replace("%40","@",$uid);
} }
$query = \OC::$server->getDatabaseConnection()->getQueryBuilder(); if ($this->domain !== '') {
$query->select('userid') $pieces = explode('@', $uid);
->from('preferences') if (count($pieces) === 1) {
->where($query->expr()->eq('appid', $query->createNamedParameter('settings'))) $username = $uid . '@' . $this->domain;
->andWhere($query->expr()->eq('configkey', $query->createNamedParameter('email'))) } else if(count($pieces) === 2 && $pieces[1] === $this->domain) {
->andWhere($query->expr()->eq('configvalue', $query->createNamedParameter($uid))); $username = $uid;
$result = $query->execute(); $uid = $pieces[0];
} else {
$users = []; return false;
while ($row = $result->fetch()) { }
$users[] = $row['userid']; } else {
}
$result->closeCursor();
if(count($users) === 1) {
$username = $uid; $username = $uid;
$uid = $users[0];
// Check if we only want logins from ONE domain and strip the domain part from UID
}elseif($this->domain !== '') {
$pieces = explode('@', $uid);
if(count($pieces) === 1) {
$username = $uid . "@" . $this->domain;
}elseif((count($pieces) === 2) && ($pieces[1] === $this->domain)) {
$username = $uid;
$uid = $pieces[0];
}else{
return false;
}
}else{
$username = $uid;
} }
$mbox = @imap_open($this->mailbox, $username, $password, OP_HALFOPEN, 1); $mbox = @imap_open($this->mailbox, $username, $password, OP_HALFOPEN, 1);
imap_errors(); imap_errors();
imap_alerts(); imap_alerts();
if($mbox !== false) { if($mbox !== false) {