commit
afaee648dd
|
@ -43,7 +43,7 @@ class Application extends App {
|
|||
return new NewUserMailHelper(
|
||||
$server->query(Defaults::class),
|
||||
$server->getURLGenerator(),
|
||||
$server->getL10N('settings'),
|
||||
$server->getL10NFactory(),
|
||||
$server->getMailer(),
|
||||
$server->getSecureRandom(),
|
||||
new TimeFactory(),
|
||||
|
|
|
@ -894,16 +894,8 @@ class UsersController extends AUserData {
|
|||
if ($email === '' || $email === null) {
|
||||
throw new OCSException('Email address not available', 101);
|
||||
}
|
||||
$username = $targetUser->getUID();
|
||||
$lang = $this->config->getUserValue($username, 'core', 'lang', 'en');
|
||||
if (!$this->l10nFactory->languageExists('settings', $lang)) {
|
||||
$lang = 'en';
|
||||
}
|
||||
|
||||
$l10n = $this->l10nFactory->get('settings', $lang);
|
||||
|
||||
try {
|
||||
$this->newUserMailHelper->setL10N($l10n);
|
||||
$emailTemplate = $this->newUserMailHelper->generateTemplate($targetUser, false);
|
||||
$this->newUserMailHelper->sendMail($targetUser, $emailTemplate);
|
||||
} catch(\Exception $e) {
|
||||
|
|
|
@ -3257,35 +3257,13 @@ class UsersControllerTest extends TestCase {
|
|||
->expects($this->once())
|
||||
->method('getEmailAddress')
|
||||
->will($this->returnValue('abc@example.org'));
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getUserValue')
|
||||
->with('user-id', 'core', 'lang')
|
||||
->willReturn('es');
|
||||
$l10n = $this->getMockBuilder(IL10N::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->l10nFactory
|
||||
->expects($this->at(0))
|
||||
->method('languageExists')
|
||||
->with('settings', 'es')
|
||||
->willReturn(true);
|
||||
$this->l10nFactory
|
||||
->expects($this->at(1))
|
||||
->method('get')
|
||||
->with('settings', 'es')
|
||||
->willReturn($l10n);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(0))
|
||||
->method('setL10N')
|
||||
->willReturn($l10n);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(1))
|
||||
->method('generateTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(2))
|
||||
->expects($this->at(1))
|
||||
->method('sendMail')
|
||||
->with($targetUser, $emailTemplate);
|
||||
|
||||
|
@ -3327,35 +3305,16 @@ class UsersControllerTest extends TestCase {
|
|||
->expects($this->once())
|
||||
->method('getEmailAddress')
|
||||
->will($this->returnValue('abc@example.org'));
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getUserValue')
|
||||
->with('user-id', 'core', 'lang')
|
||||
->willReturn('es');
|
||||
$l10n = $this->getMockBuilder(IL10N::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->l10nFactory
|
||||
->expects($this->at(0))
|
||||
->method('languageExists')
|
||||
->with('settings', 'es')
|
||||
->willReturn(false);
|
||||
$this->l10nFactory
|
||||
->expects($this->at(1))
|
||||
->method('get')
|
||||
->with('settings', 'en')
|
||||
->willReturn($l10n);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(0))
|
||||
->method('setL10N')
|
||||
->willReturn($l10n);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(1))
|
||||
->method('generateTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(2))
|
||||
->expects($this->at(1))
|
||||
->method('sendMail')
|
||||
->with($targetUser, $emailTemplate);
|
||||
|
||||
|
@ -3402,35 +3361,13 @@ class UsersControllerTest extends TestCase {
|
|||
->expects($this->once())
|
||||
->method('getEmailAddress')
|
||||
->will($this->returnValue('abc@example.org'));
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->method('getUserValue')
|
||||
->with('user-id', 'core', 'lang')
|
||||
->willReturn('es');
|
||||
$l10n = $this->getMockBuilder(IL10N::class)
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$this->l10nFactory
|
||||
->expects($this->at(0))
|
||||
->method('languageExists')
|
||||
->with('settings', 'es')
|
||||
->willReturn(true);
|
||||
$this->l10nFactory
|
||||
->expects($this->at(1))
|
||||
->method('get')
|
||||
->with('settings', 'es')
|
||||
->willReturn($l10n);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(0))
|
||||
->method('setL10N')
|
||||
->willReturn($l10n);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(1))
|
||||
->method('generateTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->newUserMailHelper
|
||||
->expects($this->at(2))
|
||||
->expects($this->at(1))
|
||||
->method('sendMail')
|
||||
->with($targetUser, $emailTemplate)
|
||||
->willThrowException(new \Exception());
|
||||
|
|
|
@ -100,7 +100,7 @@ class Application extends App {
|
|||
return new NewUserMailHelper(
|
||||
$defaults,
|
||||
$server->getURLGenerator(),
|
||||
$server->getL10N('settings'),
|
||||
$server->getL10NFactory(),
|
||||
$server->getMailer(),
|
||||
$server->getSecureRandom(),
|
||||
new TimeFactory(),
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
namespace OC\Settings\Mailer;
|
||||
|
||||
use OCP\L10N\IFactory;
|
||||
use OCP\Mail\IEMailTemplate;
|
||||
use OCP\AppFramework\Utility\ITimeFactory;
|
||||
use OCP\Defaults;
|
||||
|
@ -42,8 +43,8 @@ class NewUserMailHelper {
|
|||
private $themingDefaults;
|
||||
/** @var IURLGenerator */
|
||||
private $urlGenerator;
|
||||
/** @var IL10N */
|
||||
private $l10n;
|
||||
/** @var IFactory */
|
||||
private $l10nFactory;
|
||||
/** @var IMailer */
|
||||
private $mailer;
|
||||
/** @var ISecureRandom */
|
||||
|
@ -60,7 +61,7 @@ class NewUserMailHelper {
|
|||
/**
|
||||
* @param Defaults $themingDefaults
|
||||
* @param IURLGenerator $urlGenerator
|
||||
* @param IL10N $l10n
|
||||
* @param IFactory $l10nFactory
|
||||
* @param IMailer $mailer
|
||||
* @param ISecureRandom $secureRandom
|
||||
* @param ITimeFactory $timeFactory
|
||||
|
@ -70,7 +71,7 @@ class NewUserMailHelper {
|
|||
*/
|
||||
public function __construct(Defaults $themingDefaults,
|
||||
IURLGenerator $urlGenerator,
|
||||
IL10N $l10n,
|
||||
IFactory $l10nFactory,
|
||||
IMailer $mailer,
|
||||
ISecureRandom $secureRandom,
|
||||
ITimeFactory $timeFactory,
|
||||
|
@ -79,7 +80,7 @@ class NewUserMailHelper {
|
|||
$fromAddress) {
|
||||
$this->themingDefaults = $themingDefaults;
|
||||
$this->urlGenerator = $urlGenerator;
|
||||
$this->l10n = $l10n;
|
||||
$this->l10nFactory = $l10nFactory;
|
||||
$this->mailer = $mailer;
|
||||
$this->secureRandom = $secureRandom;
|
||||
$this->timeFactory = $timeFactory;
|
||||
|
@ -88,21 +89,20 @@ class NewUserMailHelper {
|
|||
$this->fromAddress = $fromAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the IL10N object
|
||||
*
|
||||
* @param IL10N $l10n
|
||||
*/
|
||||
public function setL10N(IL10N $l10n) {
|
||||
$this->l10n = $l10n;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param IUser $user
|
||||
* @param bool $generatePasswordResetToken
|
||||
* @return IEMailTemplate
|
||||
*/
|
||||
public function generateTemplate(IUser $user, $generatePasswordResetToken = false) {
|
||||
$userId = $user->getUID();
|
||||
$lang = $this->config->getUserValue($userId, 'core', 'lang', 'en');
|
||||
if (!$this->l10nFactory->languageExists('settings', $lang)) {
|
||||
$lang = 'en';
|
||||
}
|
||||
|
||||
$l10n = $this->l10nFactory->get('settings', $lang);
|
||||
|
||||
if ($generatePasswordResetToken) {
|
||||
$token = $this->secureRandom->generate(
|
||||
21,
|
||||
|
@ -119,7 +119,6 @@ class NewUserMailHelper {
|
|||
$link = $this->urlGenerator->getAbsoluteURL('/');
|
||||
}
|
||||
$displayName = $user->getDisplayName();
|
||||
$userId = $user->getUID();
|
||||
|
||||
$emailTemplate = $this->mailer->createEMailTemplate('settings.Welcome', [
|
||||
'link' => $link,
|
||||
|
@ -129,24 +128,24 @@ class NewUserMailHelper {
|
|||
'resetTokenGenerated' => $generatePasswordResetToken,
|
||||
]);
|
||||
|
||||
$emailTemplate->setSubject($this->l10n->t('Your %s account was created', [$this->themingDefaults->getName()]));
|
||||
$emailTemplate->setSubject($l10n->t('Your %s account was created', [$this->themingDefaults->getName()]));
|
||||
$emailTemplate->addHeader();
|
||||
if ($displayName === $userId) {
|
||||
$emailTemplate->addHeading($this->l10n->t('Welcome aboard'));
|
||||
$emailTemplate->addHeading($l10n->t('Welcome aboard'));
|
||||
} else {
|
||||
$emailTemplate->addHeading($this->l10n->t('Welcome aboard %s', [$displayName]));
|
||||
$emailTemplate->addHeading($l10n->t('Welcome aboard %s', [$displayName]));
|
||||
}
|
||||
$emailTemplate->addBodyText($this->l10n->t('Welcome to your %s account, you can add, protect, and share your data.', [$this->themingDefaults->getName()]));
|
||||
$emailTemplate->addBodyText($this->l10n->t('Your username is: %s', [$userId]));
|
||||
$emailTemplate->addBodyText($l10n->t('Welcome to your %s account, you can add, protect, and share your data.', [$this->themingDefaults->getName()]));
|
||||
$emailTemplate->addBodyText($l10n->t('Your username is: %s', [$userId]));
|
||||
if ($generatePasswordResetToken) {
|
||||
$leftButtonText = $this->l10n->t('Set your password');
|
||||
$leftButtonText = $l10n->t('Set your password');
|
||||
} else {
|
||||
$leftButtonText = $this->l10n->t('Go to %s', [$this->themingDefaults->getName()]);
|
||||
$leftButtonText = $l10n->t('Go to %s', [$this->themingDefaults->getName()]);
|
||||
}
|
||||
$emailTemplate->addBodyButtonGroup(
|
||||
$leftButtonText,
|
||||
$link,
|
||||
$this->l10n->t('Install Client'),
|
||||
$l10n->t('Install Client'),
|
||||
'https://nextcloud.com/install/#install-clients'
|
||||
);
|
||||
$emailTemplate->addFooter();
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
namespace Tests\Settings\Mailer;
|
||||
|
||||
use OC\Mail\EMailTemplate;
|
||||
use OCP\L10N\IFactory;
|
||||
use OCP\Mail\IEMailTemplate;
|
||||
use OC\Mail\Message;
|
||||
use OC\Settings\Mailer\NewUserMailHelper;
|
||||
|
@ -64,6 +65,7 @@ class NewUserMailHelperTest extends TestCase {
|
|||
->willReturn('myLogo');
|
||||
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||
$this->l10n = $this->createMock(IL10N::class);
|
||||
$this->l10nFactory = $this->createMock(IFactory::class);
|
||||
$this->mailer = $this->createMock(IMailer::class);
|
||||
$template = new EMailTemplate(
|
||||
$this->defaults,
|
||||
|
@ -82,11 +84,15 @@ class NewUserMailHelperTest extends TestCase {
|
|||
->will($this->returnCallback(function ($text, $parameters = []) {
|
||||
return vsprintf($text, $parameters);
|
||||
}));
|
||||
$this->l10nFactory->method('get')
|
||||
->will($this->returnCallback(function ($text, $lang) {
|
||||
return $this->l10n;
|
||||
}));
|
||||
|
||||
$this->newUserMailHelper = new NewUserMailHelper(
|
||||
$this->defaults,
|
||||
$this->urlGenerator,
|
||||
$this->l10n,
|
||||
$this->l10nFactory,
|
||||
$this->mailer,
|
||||
$this->secureRandom,
|
||||
$this->timeFactory,
|
||||
|
@ -113,15 +119,11 @@ class NewUserMailHelperTest extends TestCase {
|
|||
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
|
||||
$user = $this->createMock(IUser::class);
|
||||
$user
|
||||
->expects($this->at(0))
|
||||
->method('getEmailAddress')
|
||||
->willReturn('recipient@example.com');
|
||||
$user
|
||||
->expects($this->at(1))
|
||||
->expects($this->any())
|
||||
->method('getEmailAddress')
|
||||
->willReturn('recipient@example.com');
|
||||
$this->config
|
||||
->expects($this->at(0))
|
||||
->expects($this->any())
|
||||
->method('getSystemValue')
|
||||
->with('secret')
|
||||
->willReturn('MyInstanceWideSecret');
|
||||
|
@ -131,24 +133,20 @@ class NewUserMailHelperTest extends TestCase {
|
|||
->with('12345:MySuperLongSecureRandomToken', 'recipient@example.comMyInstanceWideSecret')
|
||||
->willReturn('TokenCiphertext');
|
||||
$user
|
||||
->expects($this->at(2))
|
||||
->expects($this->any())
|
||||
->method('getUID')
|
||||
->willReturn('john');
|
||||
$this->config
|
||||
->expects($this->at(1))
|
||||
->expects($this->once())
|
||||
->method('setUserValue')
|
||||
->with('john', 'core', 'lostpassword', 'TokenCiphertext');
|
||||
$user
|
||||
->expects($this->at(3))
|
||||
->method('getUID')
|
||||
->willReturn('john');
|
||||
$this->urlGenerator
|
||||
->expects($this->at(0))
|
||||
->method('linkToRouteAbsolute')
|
||||
->with('core.lost.resetform', ['userId' => 'john', 'token' => 'MySuperLongSecureRandomToken'])
|
||||
->willReturn('https://example.com/resetPassword/MySuperLongSecureRandomToken');
|
||||
$user
|
||||
->expects($this->at(4))
|
||||
->expects($this->any())
|
||||
->method('getDisplayName')
|
||||
->willReturn('john');
|
||||
$user
|
||||
|
@ -385,11 +383,11 @@ EOF;
|
|||
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
|
||||
$user = $this->createMock(IUser::class);
|
||||
$user
|
||||
->expects($this->at(0))
|
||||
->expects($this->any())
|
||||
->method('getDisplayName')
|
||||
->willReturn('John Doe');
|
||||
$user
|
||||
->expects($this->at(1))
|
||||
->expects($this->any())
|
||||
->method('getUID')
|
||||
->willReturn('john');
|
||||
$this->defaults
|
||||
|
|
Loading…
Reference in New Issue