diff --git a/lib/Base.php b/lib/Base.php index 6f60a1f..5fbb108 100644 --- a/lib/Base.php +++ b/lib/Base.php @@ -195,7 +195,7 @@ public function setDisplayName($uid, $displayName) { * * @return void */ - protected function storeUser($uid, $groups = []) { + protected function storeUser($uid, $groups = [], $email = '') { if (!$this->userExists($uid)) { $query = $this->db->getQueryBuilder(); $query->insert('users_external') @@ -211,6 +211,11 @@ protected function storeUser($uid, $groups = []) { $this->groupManager->createGroup($group)->addUser($createduser); } } + + if ($email) { + $createduser = \OC::$server->getUserManager()->get($uid); + $createduser->setSystemEMailAddress($email); + } } } diff --git a/lib/IMAP.php b/lib/IMAP.php index 9d2ec94..57edac9 100644 --- a/lib/IMAP.php +++ b/lib/IMAP.php @@ -64,6 +64,9 @@ public function checkPassword($uid, $password) { $uid = str_replace('%40', '@', $uid); } + // Get email if uid is a valid email address + if (filter_var($uid, FILTER_VALIDATE_EMAIL)) $email = mb_strtolower($uid); + $pieces = explode('@', $uid); if ($this->domain !== '') { if (count($pieces) === 1) { @@ -107,7 +110,7 @@ public function checkPassword($uid, $password) { if ($errorcode === 0) { curl_close($ch); $uid = mb_strtolower($uid); - $this->storeUser($uid, $groups); + $this->storeUser($uid, $groups, $email); return $uid; } elseif ($errorcode === CURLE_COULDNT_CONNECT || $errorcode === CURLE_SSL_CONNECT_ERROR