Manage translations for email confirmation and verification

master
Julien Rosset 1 year ago
parent e7f2b33acc
commit a910962245

@ -60,18 +60,19 @@ class UserController extends AbstractController {
$form->handleRequest($request); $form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { if ($form->isSubmitted() && $form->isValid()) {
// encode the plain password //region encode the plain password
$user->setPassword( $user->setPassword(
$userPasswordHasher->hashPassword( $userPasswordHasher->hashPassword(
$user, $user,
$form->get('newPassword')->getData() $form->get('newPassword')->getData()
) )
); );
//endregion
$entityManager->persist($user); $entityManager->persist($user);
$entityManager->flush(); $entityManager->flush();
// Generate the mail with the link to verify the account //region Generate the mail with the link to verify the account
$this->emailVerifier->sendEmailConfirmation( $this->emailVerifier->sendEmailConfirmation(
'user_mailVerify', 'user_mailVerify',
$user, $user,
@ -83,11 +84,12 @@ class UserController extends AbstractController {
) )
) )
->to($user->getEmail()) ->to($user->getEmail())
->subject('Please Confirm your Email') ->subject($this->translator->trans('emails.emailConfirmation.subject'))
->htmlTemplate('user/confirmation_email.html.twig') ->htmlTemplate('user/emailConfirmation.html.twig')
); );
//endregion
$this->addFlash('info', 'Please validate your account through the confirmation mail'); $this->addFlash('info', $this->translator->trans('pages.signUp.emailConfirmationMessage'));
return $this->redirectToRoute('core_main'); return $this->redirectToRoute('core_main');
} }
@ -106,22 +108,26 @@ class UserController extends AbstractController {
*/ */
#[Route('/emailVerify', name: 'user_mailVerify')] #[Route('/emailVerify', name: 'user_mailVerify')]
public function verifyUserEmail (Request $request, TranslatorInterface $translator, UserRepository $userRepository): Response { public function verifyUserEmail (Request $request, TranslatorInterface $translator, UserRepository $userRepository): Response {
//region Get the user id from query
$id = $request->query->get('id'); $id = $request->query->get('id');
if ($id === null) { if ($id === null) {
$this->addFlash('danger', $this->translator->trans('pages.emailVerify.errorId'));
return $this->redirectToRoute('user_signUp'); return $this->redirectToRoute('user_signUp');
} }
//endregion
//region Get the user himself
$user = $userRepository->find($id); $user = $userRepository->find($id);
if ($user === null) { if ($user === null) {
$this->addFlash('danger', $this->translator->trans('pages.emailVerify.errorUser'));
return $this->redirectToRoute('user_signUp'); return $this->redirectToRoute('user_signUp');
} }
//endregion
try { try {
$this->emailVerifier->handleEmailConfirmation($request, $user); $this->emailVerifier->handleEmailConfirmation($request, $user);
} }
catch (VerifyEmailExceptionInterface $exception) { catch (VerifyEmailExceptionInterface $exception) {
$this->addFlash('verify_email_error', $translator->trans($exception->getReason(), [], 'VerifyEmailBundle')); $this->addFlash('verify_email_error', $translator->trans($exception->getReason(), [], 'VerifyEmailBundle'));
return $this->redirectToRoute('user_signUp'); return $this->redirectToRoute('user_signUp');
} }
@ -143,7 +149,12 @@ class UserController extends AbstractController {
if ($user !== null) { if ($user !== null) {
$this->addFlash( $this->addFlash(
'warning', 'warning',
'You are already logged in, please <a href="' . $this->generateUrl('user_signOut') . '">sign out</a> first.' $this->translator->trans(
'pages.emailVerify.warningAlreadyConnected',
[
'signOutUrl' => $this->generateUrl('user_signOut'),
]
)
); );
} }

@ -15,7 +15,7 @@
<!--region menu--> <!--region menu-->
<nav class="navbar navbar-expand-lg py-0"> <nav class="navbar navbar-expand-lg py-0">
<ul class="navbar-nav"> <ul class="navbar-nav">
<li class="nav-item"><a href="{{ path('user_signIn') }}" class="nav-link py-0">{{ 'pages.signIn'|trans }}</a></li> <li class="nav-item"><a href="{{ path('user_signIn') }}" class="nav-link py-0">{{ 'pages.signIn.title'|trans }}</a></li>
<li class="nav-item"><a href="{{ path('user_signUp') }}" class="nav-link py-0">{{ 'pages.signUp.title'|trans }}</a></li> <li class="nav-item"><a href="{{ path('user_signUp') }}" class="nav-link py-0">{{ 'pages.signUp.title'|trans }}</a></li>
<li class="nav-item dropdown dropstart"> <li class="nav-item dropdown dropstart">
<a class="nav-link dropdown-toggle py-0" id="dropdown-locale" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> <a class="nav-link dropdown-toggle py-0" id="dropdown-locale" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">

@ -1,11 +0,0 @@
<h1>Hi! Please confirm your email!</h1>
<p>
Please confirm your email address by clicking the following link: <br><br>
<a href="{{ signedUrl|raw }}">Confirm my Email</a>.
This link will expire in {{ expiresAtMessageKey|trans(expiresAtMessageData, 'VerifyEmailBundle') }}.
</p>
<p>
Cheers!
</p>

@ -0,0 +1,4 @@
{{ 'emails.emailConfirmation.content'|trans({
confirmationUrl: signedUrl|raw,
expirationTime: expiresAtMessageKey|trans(expiresAtMessageData, 'VerifyEmailBundle')
}) }}

@ -1,9 +1,9 @@
{% extends 'base.html.twig' %} {% extends 'base.html.twig' %}
{% block title %}{{ 'pages.signIn'|trans }} - {{ parent() }}{% endblock %} {% block title %}{{ 'pages.signIn.title'|trans }} - {{ parent() }}{% endblock %}
{% block mainContent %} {% block mainContent %}
<h1>Sign in</h1> <h1>{{ 'pages.signIn.title'|trans }}</h1>
<form method="post"> <form method="post">
<div class="mb-3 row"> <div class="mb-3 row">
<label for="username" class="col-form-label col-sm-2">{{ 'fields.email.label'|trans }}</label> <label for="username" class="col-form-label col-sm-2">{{ 'fields.email.label'|trans }}</label>

@ -31,6 +31,7 @@
<unit id="adminValidatorAlert"> <unit id="adminValidatorAlert">
<segment> <segment>
<source>pages.signUp.adminValidatorAlert</source> <source>pages.signUp.adminValidatorAlert</source>
<!--language=html-->
<target> <target>
<![CDATA[ <![CDATA[
<p> <p>
@ -41,13 +42,46 @@
</target> </target>
</segment> </segment>
</unit> </unit>
<unit id="emailConfirmationMessage">
<segment>
<source>pages.signUp.emailConfirmationMessage</source>
<target>Please confirm your email to validate your account</target>
</segment>
</unit>
</group> </group>
<unit id="signIn"> <group id="emailVerify">
<unit id="errorId">
<segment>
<source>pages.emailVerify.errorId</source>
<target>Email confirmation link invalid: missing id</target>
</segment>
</unit>
<unit id="errorUser">
<segment>
<source>pages.emailVerify.errorUser</source>
<target>Email confirmation link invalid: invalid user</target>
</segment>
</unit>
</group>
<group id="signIn">
<unit id="title">
<segment> <segment>
<source>pages.signIn</source> <source>pages.signIn.title</source>
<target>Sign In</target> <target>Sign In</target>
</segment> </segment>
</unit> </unit>
<unit id="warningAlreadyConnected">
<segment>
<source>pages.emailVerify.warningAlreadyConnected</source>
<!--language=html-->
<target>
<![CDATA[
You are already logged in, please <a href="{signOutUrl}">sign out</a> first.
]]>
</target>
</segment>
</unit>
</group>
<unit id="signOut"> <unit id="signOut">
<segment> <segment>
<source>pages.signOut</source> <source>pages.signOut</source>
@ -149,5 +183,36 @@
</segment> </segment>
</unit> </unit>
</group> </group>
<group id="emails">
<group id="emailConfirmation">
<unit id="subject">
<segment>
<source>emails.emailConfirmation.subject</source>
<target>Web EDM - Please confirm your email</target>
</segment>
</unit>
<unit id="content">
<segment>
<source>emails.emailConfirmation.content</source>
<!--language=html-->
<target>
<![CDATA[
<h1>Please confirm your email for Web EDM</h1>
<p>
Please confirm your Web EDM email address by clicking the following link:
<br><a href="{confirmationUrl}">Confirm my Email</a>.
<br>
<br>This link will expire in {expirationTime}.
</p>
<p>
Best regards,
<br>Web EDM
</p>
]]>
</target>
</segment>
</unit>
</group>
</group>
</file> </file>
</xliff> </xliff>

@ -31,6 +31,7 @@
<unit id="adminValidatorAlert"> <unit id="adminValidatorAlert">
<segment> <segment>
<source>pages.signUp.adminValidatorAlert</source> <source>pages.signUp.adminValidatorAlert</source>
<!--language=html-->
<target> <target>
<![CDATA[ <![CDATA[
<p> <p>
@ -41,13 +42,46 @@
</target> </target>
</segment> </segment>
</unit> </unit>
<unit id="emailConfirmationMessage">
<segment>
<source>pages.signUp.emailConfirmationMessage</source>
<target>Veuillez confirmer votre adresse mail pour valider votre compte</target>
</segment>
</unit>
</group> </group>
<unit id="signIn"> <group id="emailVerify">
<unit id="errorId">
<segment>
<source>pages.emailVerify.errorId</source>
<target>Lien de confirmation mail invalide : id manquant</target>
</segment>
</unit>
<unit id="errorUser">
<segment>
<source>pages.emailVerify.errorUser</source>
<target>Lien de confirmation mail invalide : utilisateur invalide</target>
</segment>
</unit>
</group>
<group id="signIn">
<unit id="title">
<segment> <segment>
<source>pages.signIn</source> <source>pages.signIn.title</source>
<target>Connexion</target> <target>Connexion</target>
</segment> </segment>
</unit> </unit>
<unit id="warningAlreadyConnected">
<segment>
<source>pages.emailVerify.warningAlreadyConnected</source>
<!--language=html-->
<target>
<![CDATA[
Vous êtes déjà connecté, merci de vous <a href="{signOutUrl}">déconnecter</a> d'abord.
]]>
</target>
</segment>
</unit>
</group>
<unit id="signOut"> <unit id="signOut">
<segment> <segment>
<source>pages.signOut</source> <source>pages.signOut</source>
@ -149,5 +183,36 @@
</segment> </segment>
</unit> </unit>
</group> </group>
<group id="emails">
<group id="emailConfirmation">
<unit id="subject">
<segment>
<source>emails.emailConfirmation.subject</source>
<target>Web EDM - Confirmez votre adresse mail</target>
</segment>
</unit>
<unit id="content">
<segment>
<source>emails.emailConfirmation.content</source>
<!--language=html-->
<target>
<![CDATA[
<h1>Veuillez confirmer votre adresse mail pour Web EDM</h1>
<p>
Merci de confirmer votre adresse mail en cliquant sur le lien suivant :
<br><a href="{confirmationUrl}">Confirm my Email</a>.
<br>
<br>Ce lien expirera dans {expirationTime}.
</p>
<p>
Cordialement,
<br>Web EDM
</p>
]]>
</target>
</segment>
</unit>
</group>
</group>
</file> </file>
</xliff> </xliff>
Loading…
Cancel
Save