diff --git a/lib/Base.php b/lib/Base.php index 5e27d68..410ccfb 100644 --- a/lib/Base.php +++ b/lib/Base.php @@ -173,7 +173,7 @@ public function setDisplayName($uid, $displayName) { * * @return void */ - protected function storeUser($uid, $groups = []) { + protected function storeUser($uid, $groups = [], $email = '') { if (!$this->userExists($uid)) { $query = \OC::$server->getDatabaseConnection()->getQueryBuilder(); $query->insert('users_external') @@ -189,6 +189,11 @@ protected function storeUser($uid, $groups = []) { \OC::$server->getGroupManager()->createGroup($group)->addUser($createduser); } } + + if ($email) { + $config = \OC::$server->getConfig(); + $config->setUserValue( $uid, 'settings', 'email', $email); + } } } diff --git a/lib/IMAP.php b/lib/IMAP.php index 2ad784f..abebc2d 100644 --- a/lib/IMAP.php +++ b/lib/IMAP.php @@ -61,6 +61,9 @@ public function checkPassword($uid, $password) { $uid = str_replace("%40", "@", $uid); } + // Get email if uid contains @ symbol + if ( str_contains( $uid, '@' ) ) $email = $uid; + $pieces = explode('@', $uid); if ($this->domain !== '') { if (count($pieces) === 1) { @@ -104,7 +107,7 @@ public function checkPassword($uid, $password) { if ($errorcode === 0) { curl_close($ch); $uid = mb_strtolower($uid); - $this->storeUser($uid, $groups); + $this->storeUser($uid, $groups, mb_strtolower($email)); return $uid; } elseif ($errorcode === CURLE_COULDNT_CONNECT || $errorcode === CURLE_SSL_CONNECT_ERROR ||