Skip to content

Commit 0f1d3ed

Browse files
committed
bug #770 fix invalid expiresAt values for ResetPassword & VerifyEmail templates (jrushlow)
This PR was squashed before being merged into the 1.0-dev branch. Discussion ---------- fix invalid expiresAt values for ResetPassword & VerifyEmail templates Depends on: - [x] SymfonyCasts/verify-email-bundle#43 - [x] SymfonyCasts/reset-password-bundle#135 closes #727 Commits ------- 687cd5b fix invalid expiresAt values for ResetPassword & VerifyEmail templates
2 parents 08727b3 + 687cd5b commit 0f1d3ed

File tree

6 files changed

+25
-5
lines changed

6 files changed

+25
-5
lines changed

src/Maker/MakeRegistrationForm.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
use Symfony\Component\Mailer\MailerInterface;
3939
use Symfony\Component\Routing\RouterInterface;
4040
use Symfony\Component\Validator\Validation;
41+
use SymfonyCasts\Bundle\VerifyEmail\Model\VerifyEmailSignatureComponents;
4142
use SymfonyCasts\Bundle\VerifyEmail\SymfonyCastsVerifyEmailBundle;
4243

4344
/**
@@ -368,7 +369,15 @@ private function getMissingComponentsComposerMessage(): ?string
368369
$missing = false;
369370
$composerMessage = 'composer require';
370371

371-
if (!class_exists(SymfonyCastsVerifyEmailBundle::class)) {
372+
// verify-email-bundle 1.1.1 includes support for translations and a fix for the bad expiration time bug.
373+
// we need to check that if the bundle is installed, it is version 1.1.1 or greater
374+
if (class_exists(SymfonyCastsVerifyEmailBundle::class)) {
375+
$reflectedComponents = new \ReflectionClass(VerifyEmailSignatureComponents::class);
376+
377+
if (!$reflectedComponents->hasMethod('getExpirationMessageKey')) {
378+
throw new RuntimeCommandException('Please upgrade symfonycasts/verify-email-bundle to version 1.1.1 or greater.');
379+
}
380+
} else {
372381
$missing = true;
373382
$composerMessage = sprintf('%s symfonycasts/verify-email-bundle', $composerMessage);
374383
}

src/Maker/MakeResetPassword.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
use Symfony\Component\Yaml\Yaml;
3636
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestInterface;
3737
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordRequestTrait;
38+
use SymfonyCasts\Bundle\ResetPassword\Model\ResetPasswordToken;
3839
use SymfonyCasts\Bundle\ResetPassword\Persistence\Repository\ResetPasswordRequestRepositoryTrait;
3940
use SymfonyCasts\Bundle\ResetPassword\Persistence\ResetPasswordRequestRepositoryInterface;
4041
use SymfonyCasts\Bundle\ResetPassword\SymfonyCastsResetPasswordBundle;
@@ -82,6 +83,16 @@ public function configureDependencies(DependencyBuilder $dependencies)
8283
ORMDependencyBuilder::buildDependencies($dependencies);
8384

8485
$dependencies->addClassDependency(Annotation::class, 'annotations');
86+
87+
// reset-password-bundle 1.2.1 includes support for translations and a fix for the bad expiration time bug.
88+
// we need to check that version 1.2.1 is installed
89+
if (class_exists(ResetPasswordToken::class)) {
90+
$reflectedToken = new \ReflectionClass(ResetPasswordToken::class);
91+
92+
if (!$reflectedToken->hasMethod('getExpirationMessageKey')) {
93+
throw new RuntimeCommandException('Please upgrade symfonycasts/reset-password-bundle to version 1.2.1 or greater.');
94+
}
95+
}
8596
}
8697

8798
public function interact(InputInterface $input, ConsoleStyle $io, Command $command)

src/Resources/skeleton/registration/twig_email.tpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<p>
44
Please confirm your email address by clicking the following link: <br><br>
55
<a href="{{ signedUrl|raw }}">Confirm my Email</a>.
6-
This link will expire in {{ expiresAt|date('g') }} hour(s).
6+
This link will expire in {{ expiresAtMessageKey|trans(expiresAtMessageData, 'VerifyEmailBundle') }}.
77
</p>
88
99
<p>

src/Resources/skeleton/resetPassword/ResetPasswordController.tpl.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,6 @@ private function processSendingPasswordResetEmail(string $emailFormData, MailerI
185185
->htmlTemplate('reset_password/email.html.twig')
186186
->context([
187187
'resetToken' => $resetToken,
188-
'tokenLifetime' => $this->resetPasswordHelper->getTokenLifetime(),
189188
])
190189
;
191190

src/Resources/skeleton/resetPassword/twig_email.tpl.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44

55
<a href="{{ url('app_reset_password', {token: resetToken.token}) }}">{{ url('app_reset_password', {token: resetToken.token}) }}</a>
66

7-
<p>This link will expire in {{ tokenLifetime|date('g') }} hour(s).</p>
7+
<p>This link will expire in {{ resetToken.expirationMessageKey|trans(resetToken.expirationMessageData, 'ResetPasswordBundle') }}.</p>
88

99
<p>Cheers!</p>

src/Resources/skeleton/verifyEmail/EmailVerifier.tpl.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ public function sendEmailConfirmation(string $verifyEmailRouteName, UserInterfac
3333

3434
$context = $email->getContext();
3535
$context['signedUrl'] = $signatureComponents->getSignedUrl();
36-
$context['expiresAt'] = $signatureComponents->getExpiresAt();
36+
$context['expiresAtMessageKey'] = $signatureComponents->getExpirationMessageKey();
37+
$context['expiresAtMessageData'] = $signatureComponents->getExpirationMessageData();
3738

3839
$email->context($context);
3940

0 commit comments

Comments
 (0)