Commit eebe2b9c authored by Thomas Müller's avatar Thomas Müller
Browse files

User IUser::getEMailAddress() all over the place

parent df5872ec
......@@ -31,6 +31,7 @@ use OCP\IL10N;
use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Security\ISecureRandom;
use OCP\Util;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Helper\QuestionHelper;
use Symfony\Component\Console\Helper\Table;
......@@ -358,14 +359,15 @@ class EncryptAll {
$progress = new ProgressBar($this->output, count($this->userPasswords));
$progress->start();
foreach ($this->userPasswords as $recipient => $password) {
foreach ($this->userPasswords as $uid => $password) {
$progress->advance();
if (!empty($password)) {
$recipientDisplayName = $this->userManager->get($recipient)->getDisplayName();
$to = $this->config->getUserValue($recipient, 'settings', 'email', '');
$recipient = $this->userManager->get($uid);
$recipientDisplayName = $recipient->getDisplayName();
$to = $recipient->getEMailAddress();
if ($to === '') {
$noMail[] = $recipient;
$noMail[] = $uid;
continue;
}
......@@ -380,12 +382,12 @@ class EncryptAll {
$message->setHtmlBody($htmlBody);
$message->setPlainBody($textBody);
$message->setFrom([
\OCP\Util::getDefaultEmailAddress('admin-noreply')
Util::getDefaultEmailAddress('admin-noreply')
]);
$this->mailer->send($message);
} catch (\Exception $e) {
$noMail[] = $recipient;
$noMail[] = $uid;
}
}
}
......
......@@ -199,7 +199,7 @@ class Users {
// Find the data
$data['quota'] = $this->fillStorageInfo($userId);
$data['email'] = $this->config->getUserValue($userId, 'settings', 'email');
$data['email'] = $targetUserObject->getEMailAddress();
$data['displayname'] = $targetUserObject->getDisplayName();
return new OC_OCS_Result($data);
......
......@@ -27,26 +27,27 @@
namespace OCA\Provisioning_API\Tests;
use OCA\Provisioning_API\Users;
use OCP\API;
use OCP\IUserManager;
use OCP\IConfig;
use OCP\IGroupManager;
use OCP\IUserSession;
use PHPUnit_Framework_MockObject_MockObject;
use Test\TestCase as OriginalTest;
use OCP\ILogger;
class UsersTest extends OriginalTest {
/** @var IUserManager */
/** @var IUserManager | PHPUnit_Framework_MockObject_MockObject */
protected $userManager;
/** @var IConfig */
/** @var IConfig | PHPUnit_Framework_MockObject_MockObject */
protected $config;
/** @var \OC\Group\Manager */
/** @var \OC\Group\Manager | PHPUnit_Framework_MockObject_MockObject */
protected $groupManager;
/** @var IUserSession */
/** @var IUserSession | PHPUnit_Framework_MockObject_MockObject */
protected $userSession;
/** @var ILogger */
/** @var ILogger | PHPUnit_Framework_MockObject_MockObject */
protected $logger;
/** @var Users */
/** @var Users | PHPUnit_Framework_MockObject_MockObject */
protected $api;
protected function tearDown() {
......@@ -83,7 +84,7 @@ class UsersTest extends OriginalTest {
->method('getUser')
->will($this->returnValue(null));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->getUsers());
}
......@@ -203,7 +204,7 @@ class UsersTest extends OriginalTest {
->method('getSubAdmin')
->will($this->returnValue($subAdminManager));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->getUsers());
}
......@@ -464,7 +465,7 @@ class UsersTest extends OriginalTest {
->with()
->willReturn($subAdminManager);
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->addUser());
}
......@@ -653,7 +654,7 @@ class UsersTest extends OriginalTest {
->method('getUser')
->will($this->returnValue(null));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->getUser(['userid' => 'UserToGet']));
}
......@@ -669,7 +670,7 @@ class UsersTest extends OriginalTest {
->with('UserToGet')
->will($this->returnValue(null));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_NOT_FOUND, 'The requested user could not be found');
$expected = new \OC_OCS_Result(null, API::RESPOND_NOT_FOUND, 'The requested user could not be found');
$this->assertEquals($expected, $this->api->getUser(['userid' => 'UserToGet']));
}
......@@ -680,6 +681,9 @@ class UsersTest extends OriginalTest {
->method('getUID')
->will($this->returnValue('admin'));
$targetUser = $this->getMock('\OCP\IUser');
$targetUser->expects($this->once())
->method('getEMailAddress')
->willReturn('demo@owncloud.org');
$this->userSession
->expects($this->once())
->method('getUser')
......@@ -704,11 +708,6 @@ class UsersTest extends OriginalTest {
->method('fillStorageInfo')
->with('UserToGet')
->will($this->returnValue(['DummyValue']));
$this->config
->expects($this->at(1))
->method('getUserValue')
->with('UserToGet', 'settings', 'email')
->will($this->returnValue('demo@owncloud.org'));
$targetUser
->expects($this->once())
->method('getDisplayName')
......@@ -732,6 +731,10 @@ class UsersTest extends OriginalTest {
->method('getUID')
->will($this->returnValue('subadmin'));
$targetUser = $this->getMock('\OCP\IUser');
$targetUser
->expects($this->once())
->method('getEMailAddress')
->willReturn('demo@owncloud.org');
$this->userSession
->expects($this->once())
->method('getUser')
......@@ -768,11 +771,6 @@ class UsersTest extends OriginalTest {
->method('fillStorageInfo')
->with('UserToGet')
->will($this->returnValue(['DummyValue']));
$this->config
->expects($this->at(1))
->method('getUserValue')
->with('UserToGet', 'settings', 'email')
->will($this->returnValue('demo@owncloud.org'));
$targetUser
->expects($this->once())
->method('getDisplayName')
......@@ -823,7 +821,7 @@ class UsersTest extends OriginalTest {
->method('getSubAdmin')
->will($this->returnValue($subAdminManager));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->getUser(['userid' => 'UserToGet']));
}
......@@ -865,15 +863,14 @@ class UsersTest extends OriginalTest {
->method('fillStorageInfo')
->with('subadmin')
->will($this->returnValue(['DummyValue']));
$this->config
->expects($this->once())
->method('getUserValue')
->with('subadmin', 'settings', 'email')
->will($this->returnValue('subadmin@owncloud.org'));
$targetUser
->expects($this->once())
->method('getDisplayName')
->will($this->returnValue('Subadmin User'));
$targetUser
->expects($this->once())
->method('getEMailAddress')
->will($this->returnValue('subadmin@owncloud.org'));
$expected = new \OC_OCS_Result([
'quota' => ['DummyValue'],
......@@ -889,7 +886,7 @@ class UsersTest extends OriginalTest {
->method('getUser')
->will($this->returnValue(null));
$expected = new \OC_OCS_Result(null, \OCP\API::RESPOND_UNAUTHORISED);
$expected = new \OC_OCS_Result(null, API::RESPOND_UNAUTHORISED);
$this->assertEquals($expected, $this->api->editUser(['userid' => 'UserToEdit']));
}
......
......@@ -35,6 +35,8 @@
*
*/
use OCP\IUser;
OC_JSON::checkLoggedIn();
OCP\JSON::callCheck();
......@@ -135,17 +137,23 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
$itemSource = (string)$_POST['itemSource'];
$recipient = (string)$_POST['recipient'];
$userManager = \OC::$server->getUserManager();
$recipientList = [];
if($shareType === \OCP\Share::SHARE_TYPE_USER) {
$recipientList[] = $recipient;
$recipientList[] = $userManager->get($recipient);
} elseif ($shareType === \OCP\Share::SHARE_TYPE_GROUP) {
$recipientList = \OC_Group::usersInGroup($recipient);
$group = \OC::$server->getGroupManager()->get($recipient);
$recipientList = $group->searchUsers('');
}
// don't send a mail to the user who shared the file
$recipientList = array_diff($recipientList, array(\OCP\User::getUser()));
$recipientList = array_filter($recipientList, function($user) {
/** @var IUser $user */
return $user->getUID() !== \OCP\User::getUser();
});
$mailNotification = new \OC\Share\MailNotifications(
\OC::$server->getUserSession()->getUser()->getUID(),
\OC::$server->getConfig(),
\OC::$server->getUserSession()->getUser(),
\OC::$server->getL10N('lib'),
\OC::$server->getMailer(),
\OC::$server->getLogger(),
......@@ -183,8 +191,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
$to_address = (string)$_POST['toaddress'];
$mailNotification = new \OC\Share\MailNotifications(
\OC::$server->getUserSession()->getUser()->getUID(),
\OC::$server->getConfig(),
\OC::$server->getUserSession()->getUser(),
\OC::$server->getL10N('lib'),
\OC::$server->getMailer(),
\OC::$server->getLogger(),
......@@ -199,7 +206,6 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['itemSo
} catch (Exception $e) {
\OCP\Util::writeLog('sharing', "Couldn't read date: " . $e->getMessage(), \OCP\Util::ERROR);
}
}
$result = $mailNotification->sendLinkShareMail($to_address, $file, $link, $expiration);
......
......@@ -218,13 +218,12 @@ class LostController extends Controller {
throw new \Exception($this->l10n->t('Couldn\'t send reset email. Please make sure your username is correct.'));
}
$email = $this->config->getUserValue($user, 'settings', 'email');
$userObject = $this->userManager->get($user);
$email = $userObject->getEMailAddress();
if (empty($email)) {
throw new \Exception(
$this->l10n->t('Couldn\'t send reset email because there is no '.
'email address for this username. Please ' .
'contact your administrator.')
$this->l10n->t('Could not send reset email because there is no email address for this username. Please contact your administrator.')
);
}
......
......@@ -41,11 +41,11 @@ class OC_OCS_Cloud {
}
public static function getCurrentUser() {
$email=\OC::$server->getConfig()->getUserValue(OC_User::getUser(), 'settings', 'email', '');
$userObject = \OC::$server->getUserManager()->get(OC_User::getUser());
$data = array(
'id' => OC_User::getUser(),
'display-name' => OC_User::getDisplayName(),
'email' => $email,
'id' => $userObject->getUID(),
'display-name' => $userObject->getDisplayName(),
'email' => $userObject->getEMailAddress(),
);
return new OC_OCS_Result($data);
}
......
......@@ -28,11 +28,12 @@
namespace OC\Share;
use DateTime;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IUser;
use OCP\Mail\IMailer;
use OCP\ILogger;
use OCP\Defaults;
use OCP\Util;
/**
* Class MailNotifications
......@@ -41,16 +42,14 @@ use OCP\Defaults;
*/
class MailNotifications {
/** @var string sender userId */
private $userId;
/** @var IUser sender userId */
private $user;
/** @var string sender email address */
private $replyTo;
/** @var string */
private $senderDisplayName;
/** @var IL10N */
private $l;
/** @var IConfig */
private $config;
/** @var IMailer */
private $mailer;
/** @var Defaults */
......@@ -59,34 +58,31 @@ class MailNotifications {
private $logger;
/**
* @param string $uid user id
* @param IConfig $config
* @param IUser $user
* @param IL10N $l10n
* @param IMailer $mailer
* @param ILogger $logger
* @param Defaults $defaults
*/
public function __construct($uid,
IConfig $config,
public function __construct(IUser $user,
IL10N $l10n,
IMailer $mailer,
ILogger $logger,
Defaults $defaults) {
$this->l = $l10n;
$this->userId = $uid;
$this->config = $config;
$this->user = $user;
$this->mailer = $mailer;
$this->logger = $logger;
$this->defaults = $defaults;
$this->replyTo = $this->config->getUserValue($this->userId, 'settings', 'email', null);
$this->senderDisplayName = \OCP\User::getDisplayName($this->userId);
$this->replyTo = $this->user->getEMailAddress();
$this->senderDisplayName = $this->user->getDisplayName();
}
/**
* inform users if a file was shared with them
*
* @param array $recipientList list of recipients
* @param IUser[] $recipientList list of recipients
* @param string $itemSource shared item source
* @param string $itemType shared item type
* @return array list of user to whom the mail send operation failed
......@@ -95,8 +91,8 @@ class MailNotifications {
$noMail = [];
foreach ($recipientList as $recipient) {
$recipientDisplayName = \OCP\User::getDisplayName($recipient);
$to = $this->config->getUserValue($recipient, 'settings', 'email', '');
$recipientDisplayName = $recipient->getDisplayName();
$to = $recipient->getEMailAddress();
if ($to === '') {
$noMail[] = $recipientDisplayName;
......@@ -233,4 +229,14 @@ class MailNotifications {
return [$htmlMail, $plainTextMail];
}
/**
* @param $itemSource
* @param $itemType
* @param IUser $recipient
* @return array
*/
protected function getItemSharedWithUser($itemSource, $itemType, $recipient) {
return Share::getItemSharedWithUser($itemType, $itemSource, $recipient->getUID());
}
}
......@@ -312,7 +312,7 @@ class User implements IUser {
* @since 9.0.0
*/
public function getEMailAddress() {
return $this->config->getUserValue($this->uid, 'settings', 'email');
return $this->config->getUserValue($this->uid, 'settings', 'email', null);
}
/**
......
......@@ -164,6 +164,10 @@ class UsersController extends Controller {
$subAdminGroups[$key] = $subAdminGroup->getGID();
}
$displayName = $user->getEMailAddress();
if (is_null($displayName)) {
$displayName = '';
}
return [
'name' => $user->getUID(),
'displayname' => $user->getDisplayName(),
......@@ -173,7 +177,7 @@ class UsersController extends Controller {
'storageLocation' => $user->getHome(),
'lastLogin' => $user->getLastLogin() * 1000,
'backend' => $user->getBackendClassName(),
'email' => $this->config->getUserValue($user->getUID(), 'settings', 'email', ''),
'email' => $displayName,
'isRestoreDisabled' => !$restorePossible,
];
}
......
......@@ -54,23 +54,24 @@ if ($config->getSystemValue('enable_avatars', true) === true) {
}
// Highlight navigation entry
OC_App::setActiveNavigationEntry( 'personal' );
OC::$server->getNavigationManager()->setActiveEntry('personal');
$storageInfo=OC_Helper::getStorageInfo('/');
$email=$config->getUserValue(OC_User::getUser(), 'settings', 'email', '');
$user = OC::$server->getUserManager()->get(OC_User::getUser());
$email = $user->getEMailAddress();
$userLang=$config->getUserValue( OC_User::getUser(), 'core', 'lang', OC_L10N::findLanguage() );
$languageCodes=OC_L10N::findAvailableLanguages();
// array of common languages
$commonlangcodes = array(
$commonLangCodes = array(
'en', 'es', 'fr', 'de', 'de_DE', 'ja', 'ar', 'ru', 'nl', 'it', 'pt_BR', 'pt_PT', 'da', 'fi_FI', 'nb_NO', 'sv', 'tr', 'zh_CN', 'ko'
);
$languageNames=include 'languageCodes.php';
$languages=array();
$commonlanguages = array();
$commonLanguages = array();
foreach($languageCodes as $lang) {
$l = \OC::$server->getL10N('settings', $lang);
// TRANSLATORS this is the language name for the language switcher in the personal settings and should be the localized version
......@@ -82,12 +83,12 @@ foreach($languageCodes as $lang) {
$ln=array('code'=>$lang, 'name'=>$lang);
}
// put apropriate languages into apropriate arrays, to print them sorted
// put appropriate languages into appropriate arrays, to print them sorted
// used language -> common languages -> divider -> other languages
if ($lang === $userLang) {
$userLang = $ln;
} elseif (in_array($lang, $commonlangcodes)) {
$commonlanguages[array_search($lang, $commonlangcodes)]=$ln;
} elseif (in_array($lang, $commonLangCodes)) {
$commonLanguages[array_search($lang, $commonLangCodes)]=$ln;
} else {
$languages[]=$ln;
}
......@@ -101,7 +102,7 @@ if (!is_array($userLang)) {
];
}
ksort($commonlanguages);
ksort($commonLanguages);
// sort now by displayed language not the iso-code
usort( $languages, function ($a, $b) {
......@@ -142,7 +143,7 @@ $tmpl->assign('usage_relative', $storageInfo['relative']);
$tmpl->assign('clients', $clients);
$tmpl->assign('email', $email);
$tmpl->assign('languages', $languages);
$tmpl->assign('commonlanguages', $commonlanguages);
$tmpl->assign('commonlanguages', $commonLanguages);
$tmpl->assign('activelanguage', $userLang);
$tmpl->assign('passwordChangeSupported', OC_User::canUserChangePassword(OC_User::getUser()));
$tmpl->assign('displayNameChangeSupported', OC_User::canUserChangeDisplayName(OC_User::getUser()));
......
......@@ -20,8 +20,18 @@
*/
namespace OC\Core\LostPassword\Controller;
use OC\Core\Application;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\IConfig;
use OCP\IL10N;
use OCP\IRequest;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\Mail\IMailer;
use OCP\Security\ISecureRandom;
use PHPUnit_Framework_MockObject_MockObject;
/**
* Class LostControllerTest
......@@ -30,47 +40,84 @@ use OCP\AppFramework\Http\TemplateResponse;
*/
class LostControllerTest extends \PHPUnit_Framework_TestCase {
private $container;
/** @var LostController */
private $lostController;
/** @var IUser */
private $existingUser;
/** @var IURLGenerator | PHPUnit_Framework_MockObject_MockObject */
private $urlGenerator;
/** @var IL10N */
private $l10n;
/** @var IUserManager | PHPUnit_Framework_MockObject_MockObject */
private $userManager;
/** @var \OC_Defaults */
private $defaults;
/** @var IConfig | PHPUnit_Framework_MockObject_MockObject */
private $config;
/** @var IMailer | PHPUnit_Framework_MockObject_MockObject */
private $mailer;
/** @var ISecureRandom | PHPUnit_Framework_MockObject_MockObject */
private $secureRandom;
/** @var ITimeFactory | PHPUnit_Framework_MockObject_MockObject */
private $timeFactory;
/** @var IRequest */
private $request;
protected function setUp() {
$app = new Application();
$this->container = $app->getContainer();
$this->container['AppName'] = 'core';
$this->container['Config'] = $this->getMockBuilder('\OCP\IConfig')
$this->existingUser = $this->getMockBuilder('OCP\IUser')
->disableOriginalConstructor()->getMock();
$this->existingUser
->expects($this->any())
->method('getEMailAddress')
->willReturn('test@example.com');
$this->config = $this->getMockBuilder('\OCP\IConfig')
->disableOriginalConstructor()->getMock();
$this->container['L10N'] = $this->getMockBuilder('\OCP\IL10N')
$this->l10n = $this->getMockBuilder('\OCP\IL10N')
->disableOriginalConstructor()->getMock();
$this->container['L10N']
$this->l10n
->expects($this->any())
->method('t')
->will($this->returnCallback(function($text, $parameters = array()) {
return vsprintf($text, $parameters);
}));
$this->container['Defaults'] = $this->getMockBuilder('\OC_Defaults')
$this->defaults = $this->getMockBuilder('\OC_Defaults')
->disableOriginalConstructor()->getMock();
$this->container['UserManager'] = $this->getMockBuilder('\OCP\IUserManager')
$this->userManager = $this->getMockBuilder('\OCP\IUserManager')
->disableOriginalConstructor()->getMock();
$this->container['Config'] = $this->getMockBuilder('\OCP\IConfig')
$this->urlGenerator = $this->getMockBuilder('\OCP\IURLGenerator')
->disableOriginalConstructor()->getMock();
$this->container['URLGenerator'] = $this->getMockBuilder('\OCP\IURLGenerator')
$this->mailer = $this->getMockBuilder('\OCP\Mail\IMailer')
->disableOriginalConstructor()->getMock();
$this->container['Mailer'] = $this->getMockBuilder('\OCP\Mail\IMailer')
$this->secureRandom = $this->getMockBuilder('\OCP\Security\ISecureRandom')
->disableOriginalConstructor()->getMock();
$this->container['SecureRandom'] = $this->getMockBuilder('\OCP\Security\ISecureRandom')
$this->timeFactory = $this->getMockBuilder('\OCP\AppFramework\Utility\ITimeFactory')
->disableOriginalConstructor()->getMock();
$this->container['TimeFactory'] = $this->getMockBuilder('\OCP\AppFramework\Utility\ITimeFactory')
$this->request = $this->getMockBuilder('OCP\IRequest')
->disableOriginalConstructor()->getMock();
$this->container['IsEncryptionEnabled'] = true;
$this->lostController = $this->container['LostController'];
$this->lostController = new LostController(
'Core',
$this->request,
$this->urlGenerator,
$this->userManager,
$this->defaults,
$this->l10n,
$this->config,
$this->secureRandom,
'lostpassword-noreply@localhost',
true,
$this->mailer,
$this->timeFactory
);
}