Merge pull request #4308 from nextcloud/lost-password-email
Update email template for lost password email
This commit is contained in:
commit
81d3732bf5
|
@ -284,15 +284,29 @@ class LostController extends Controller {
|
|||
|
||||
$link = $this->urlGenerator->linkToRouteAbsolute('core.lost.resetform', array('userId' => $user->getUID(), 'token' => $token));
|
||||
|
||||
$tmpl = new \OC_Template('core', 'lostpassword/email');
|
||||
$tmpl->assign('link', $link);
|
||||
$msg = $tmpl->fetchPage();
|
||||
$emailTemplate = $this->mailer->createEMailTemplate();
|
||||
|
||||
$emailTemplate->addHeader();
|
||||
$emailTemplate->addHeading($this->l10n->t('Password reset'));
|
||||
|
||||
$emailTemplate->addBodyText(
|
||||
$this->l10n->t('Click the following button to reset your password. If you have not requested the password reset, then ignore this email.'),
|
||||
$this->l10n->t('Click the following link to reset your password. If you have not requested the password reset, then ignore this email.')
|
||||
);
|
||||
|
||||
$emailTemplate->addBodyButton(
|
||||
$this->l10n->t('Reset your password'),
|
||||
$link,
|
||||
false
|
||||
);
|
||||
$emailTemplate->addFooter();
|
||||
|
||||
try {
|
||||
$message = $this->mailer->createMessage();
|
||||
$message->setTo([$email => $user->getUID()]);
|
||||
$message->setSubject($this->l10n->t('%s password reset', [$this->defaults->getName()]));
|
||||
$message->setPlainBody($msg);
|
||||
$message->setPlainBody($emailTemplate->renderText());
|
||||
$message->setHtmlBody($emailTemplate->renderHTML());
|
||||
$message->setFrom([$this->from => $this->defaults->getName()]);
|
||||
$this->mailer->send($message);
|
||||
} catch (\Exception $e) {
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @author Christopher Schäpers <kondou@ts.unde.re>
|
||||
*
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
* @license AGPL-3.0
|
||||
*
|
||||
* This code is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License, version 3,
|
||||
* as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License, version 3,
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
*/
|
||||
echo str_replace('{link}', $_['link'], $l->t('Use the following link to reset your password: {link}'));
|
|
@ -423,10 +423,12 @@ EOF;
|
|||
*
|
||||
* @param string $text Text of button
|
||||
* @param string $url URL of button
|
||||
* @param string $plainText Text of button in plain text version
|
||||
* if empty the $text is used, if false none will be used
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
public function addBodyButton($text, $url) {
|
||||
public function addBodyButton($text, $url, $plainText = '') {
|
||||
if ($this->footerAdded) {
|
||||
return;
|
||||
}
|
||||
|
@ -436,9 +438,18 @@ EOF;
|
|||
$this->bodyOpened = true;
|
||||
}
|
||||
|
||||
if ($plainText === '') {
|
||||
$plainText = $text;
|
||||
}
|
||||
|
||||
$color = $this->themingDefaults->getColorPrimary();
|
||||
$this->htmlBody .= vsprintf($this->button, [$color, $color, $url, $color, htmlspecialchars($text)]);
|
||||
$this->plainBody .= $text . ': ' . $url . PHP_EOL;
|
||||
|
||||
if ($plainText !== false) {
|
||||
$this->plainBody .= $plainText . ': ';
|
||||
}
|
||||
|
||||
$this->plainBody .= $url . PHP_EOL;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -99,10 +99,12 @@ interface IEMailTemplate {
|
|||
*
|
||||
* @param string $text Text of button
|
||||
* @param string $url URL of button
|
||||
* @param string $plainText Text of button in plain text version
|
||||
* if empty the $text is used, if false none will be used
|
||||
*
|
||||
* @since 12.0.0
|
||||
*/
|
||||
public function addBodyButton($text, $url);
|
||||
public function addBodyButton($text, $url, $plainText = '');
|
||||
|
||||
/**
|
||||
* Adds a logo and a text to the footer. <br> in the text will be replaced by new lines in the plain text email
|
||||
|
|
|
@ -33,6 +33,7 @@ use OCP\IRequest;
|
|||
use OCP\IURLGenerator;
|
||||
use OCP\IUser;
|
||||
use OCP\IUserManager;
|
||||
use OCP\Mail\IEMailTemplate;
|
||||
use OCP\Mail\IMailer;
|
||||
use OCP\Security\ICrypto;
|
||||
use OCP\Security\ISecureRandom;
|
||||
|
@ -314,17 +315,32 @@ class LostControllerTest extends \Test\TestCase {
|
|||
$message
|
||||
->expects($this->at(2))
|
||||
->method('setPlainBody')
|
||||
->with('Use the following link to reset your password: https://example.tld/index.php/lostpassword/');
|
||||
->with('text body');
|
||||
$message
|
||||
->expects($this->at(3))
|
||||
->method('setHtmlBody')
|
||||
->with('HTML body');
|
||||
$message
|
||||
->expects($this->at(4))
|
||||
->method('setFrom')
|
||||
->with(['lostpassword-noreply@localhost' => null]);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderHTML')
|
||||
->willReturn('HTML body');
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderText')
|
||||
->willReturn('text body');
|
||||
$this->mailer
|
||||
->expects($this->at(0))
|
||||
->method('createEMailTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->method('createMessage')
|
||||
->will($this->returnValue($message));
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->expects($this->at(2))
|
||||
->method('send')
|
||||
->with($message);
|
||||
|
||||
|
@ -385,17 +401,32 @@ class LostControllerTest extends \Test\TestCase {
|
|||
$message
|
||||
->expects($this->at(2))
|
||||
->method('setPlainBody')
|
||||
->with('Use the following link to reset your password: https://example.tld/index.php/lostpassword/');
|
||||
->with('text body');
|
||||
$message
|
||||
->expects($this->at(3))
|
||||
->method('setHtmlBody')
|
||||
->with('HTML body');
|
||||
$message
|
||||
->expects($this->at(4))
|
||||
->method('setFrom')
|
||||
->with(['lostpassword-noreply@localhost' => null]);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderHTML')
|
||||
->willReturn('HTML body');
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderText')
|
||||
->willReturn('text body');
|
||||
$this->mailer
|
||||
->expects($this->at(0))
|
||||
->method('createEMailTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->method('createMessage')
|
||||
->will($this->returnValue($message));
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->expects($this->at(2))
|
||||
->method('send')
|
||||
->with($message);
|
||||
|
||||
|
@ -450,17 +481,32 @@ class LostControllerTest extends \Test\TestCase {
|
|||
$message
|
||||
->expects($this->at(2))
|
||||
->method('setPlainBody')
|
||||
->with('Use the following link to reset your password: https://example.tld/index.php/lostpassword/');
|
||||
->with('text body');
|
||||
$message
|
||||
->expects($this->at(3))
|
||||
->method('setHtmlBody')
|
||||
->with('HTML body');
|
||||
$message
|
||||
->expects($this->at(4))
|
||||
->method('setFrom')
|
||||
->with(['lostpassword-noreply@localhost' => null]);
|
||||
$emailTemplate = $this->createMock(IEMailTemplate::class);
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderHTML')
|
||||
->willReturn('HTML body');
|
||||
$emailTemplate->expects($this->any())
|
||||
->method('renderText')
|
||||
->willReturn('text body');
|
||||
$this->mailer
|
||||
->expects($this->at(0))
|
||||
->method('createEMailTemplate')
|
||||
->willReturn($emailTemplate);
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->method('createMessage')
|
||||
->will($this->returnValue($message));
|
||||
$this->mailer
|
||||
->expects($this->at(1))
|
||||
->expects($this->at(2))
|
||||
->method('send')
|
||||
->with($message)
|
||||
->will($this->throwException(new \Exception()));
|
||||
|
|
|
@ -4,7 +4,7 @@ You have now an Nextcloud account, you can add, protect, and share your data.
|
|||
|
||||
Your username is: abc
|
||||
|
||||
Set your password: https://example.org/resetPassword/123
|
||||
https://example.org/resetPassword/123
|
||||
|
||||
--
|
||||
TestCloud - A safe home for your data
|
||||
|
|
|
@ -157,7 +157,8 @@ class EMailTemplateTest extends TestCase {
|
|||
$this->emailTemplate->addBodyText('You have now an Nextcloud account, you can add, protect, and share your data.');
|
||||
$this->emailTemplate->addBodyText('Your username is: abc');
|
||||
$this->emailTemplate->addBodyButton(
|
||||
'Set your password', 'https://example.org/resetPassword/123'
|
||||
'Set your password', 'https://example.org/resetPassword/123',
|
||||
false
|
||||
);
|
||||
$this->emailTemplate->addFooter();
|
||||
|
||||
|
|
Loading…
Reference in New Issue