mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-07-09 13:27:45 +00:00
feat: devweb - Make translations on forgotten and reset password pages (including mail and token)
This commit is contained in:
@@ -8,6 +8,7 @@ package uppa.project.bean;
|
|||||||
|
|
||||||
import java.io.Serial;
|
import java.io.Serial;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import javax.mail.Authenticator;
|
import javax.mail.Authenticator;
|
||||||
@@ -24,6 +25,7 @@ import uppa.project.database.dao.DAOException;
|
|||||||
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory;
|
||||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||||
import uppa.project.database.pojo.User;
|
import uppa.project.database.pojo.User;
|
||||||
|
import uppa.project.web.translation.Translator;
|
||||||
|
|
||||||
import static uppa.project.web.servlet.ForgottenPasswordServlet.CreateToken;
|
import static uppa.project.web.servlet.ForgottenPasswordServlet.CreateToken;
|
||||||
|
|
||||||
@@ -34,6 +36,8 @@ public class ForgottenPasswordBean implements Serializable {
|
|||||||
|
|
||||||
private String email;
|
private String email;
|
||||||
|
|
||||||
|
private Translator translator;
|
||||||
|
|
||||||
public ForgottenPasswordBean() {
|
public ForgottenPasswordBean() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,6 +77,11 @@ public class ForgottenPasswordBean implements Serializable {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ForgottenPasswordBean setTranslator(Translator translator) {
|
||||||
|
this.translator = translator;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Création et envoi d'un token de réinitialisation de mot de passe
|
* Création et envoi d'un token de réinitialisation de mot de passe
|
||||||
*
|
*
|
||||||
@@ -117,20 +126,12 @@ public class ForgottenPasswordBean implements Serializable {
|
|||||||
Message message = new MimeMessage(session);
|
Message message = new MimeMessage(session);
|
||||||
message.setFrom(new InternetAddress(username));
|
message.setFrom(new InternetAddress(username));
|
||||||
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
|
message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
|
||||||
message.setSubject("Réinitialisation de votre mot de passe");
|
message.setSubject(this.translator.translate("forgotten_email_object"));
|
||||||
message.setText("Bonjour,\n\n" +
|
String contentTemplate = this.translator.translate("forgotten_email_content");
|
||||||
"Vous avez demandé la réinitialisation de votre mot de passe.\n" +
|
String content = MessageFormat.format(contentTemplate, requestPath, token);
|
||||||
"Pour cela, veuillez cliquer sur le lien suivant :"+ requestPath +"/reset-password?token=" + token + "\n\n" +
|
message.setText(content);
|
||||||
"Ce lien est valable 10 minutes.\n" +
|
System.out.println(contentTemplate);
|
||||||
"Si vous n'êtes pas à l'origine de cette demande, ne prenez pas compte de ce mail.\n\n" +
|
System.out.println(content);
|
||||||
"Cordialement,\n" +
|
|
||||||
"L'équipe CardRush" +
|
|
||||||
"\n\n\n\n" +
|
|
||||||
"Ce message est généré automatiquement, merci de ne pas y répondre.\n" +
|
|
||||||
"CardRush est la propriété de CardRush Corporation, 2024. Tous droits réservés.\n" +
|
|
||||||
"CardRush Corporation, 2024, 1 rue de la programmation web, 64000 Pau, France\n" +
|
|
||||||
"Société fictive créée dans le cadre d'un projet universitaire. Auteurs du projet: MITRESSÉ Kevin & VABRE Lucàs "
|
|
||||||
);
|
|
||||||
// Envoi du message
|
// Envoi du message
|
||||||
Transport.send(message);
|
Transport.send(message);
|
||||||
|
|
||||||
|
|||||||
+7
-1
@@ -25,6 +25,7 @@ import uppa.project.database.pojo.User;
|
|||||||
import uppa.project.database.dao.EntityManagerProvider;
|
import uppa.project.database.dao.EntityManagerProvider;
|
||||||
import uppa.project.json.HttpResponse;
|
import uppa.project.json.HttpResponse;
|
||||||
import uppa.project.json.HttpResponseCode;
|
import uppa.project.json.HttpResponseCode;
|
||||||
|
import uppa.project.web.translation.Translator;
|
||||||
|
|
||||||
@WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password")
|
@WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password")
|
||||||
public class ForgottenPasswordServlet extends HttpServlet {
|
public class ForgottenPasswordServlet extends HttpServlet {
|
||||||
@@ -41,6 +42,10 @@ public class ForgottenPasswordServlet extends HttpServlet {
|
|||||||
* @throws ServletException si une erreur de servlet survient
|
* @throws ServletException si une erreur de servlet survient
|
||||||
*/
|
*/
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||||
|
if (request.getSession().getAttribute("translator") == null) {
|
||||||
|
request.getSession().setAttribute("language", "FR");
|
||||||
|
request.getSession().setAttribute("translator", Translator.generateTranslator(request.getSession(), request.getServletContext()));
|
||||||
|
}
|
||||||
request.setAttribute("current", "forgotten-password");
|
request.setAttribute("current", "forgotten-password");
|
||||||
request.getRequestDispatcher("/WEB-INF/pages/forgotten-password.jsp").forward(request, response);
|
request.getRequestDispatcher("/WEB-INF/pages/forgotten-password.jsp").forward(request, response);
|
||||||
}
|
}
|
||||||
@@ -58,7 +63,8 @@ public class ForgottenPasswordServlet extends HttpServlet {
|
|||||||
PrintWriter out = response.getWriter();
|
PrintWriter out = response.getWriter();
|
||||||
|
|
||||||
ForgottenPasswordBean forgottenPasswordBean = new ForgottenPasswordBean()
|
ForgottenPasswordBean forgottenPasswordBean = new ForgottenPasswordBean()
|
||||||
.setEmail(request.getParameter("email"));
|
.setEmail(request.getParameter("email"))
|
||||||
|
.setTranslator((Translator) request.getSession().getAttribute("translator"));
|
||||||
|
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
HttpResponse httpResponse;
|
HttpResponse httpResponse;
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import uppa.project.database.dao.jpa.DAO_JPA_RecoveryPasswordToken;
|
|||||||
import uppa.project.database.pojo.RecoveryPasswordToken;
|
import uppa.project.database.pojo.RecoveryPasswordToken;
|
||||||
import uppa.project.json.HttpResponse;
|
import uppa.project.json.HttpResponse;
|
||||||
import uppa.project.json.HttpResponseCode;
|
import uppa.project.json.HttpResponseCode;
|
||||||
|
import uppa.project.web.translation.Translator;
|
||||||
|
|
||||||
@WebServlet(name = "resetPasswordServlet", value = "/reset-password")
|
@WebServlet(name = "resetPasswordServlet", value = "/reset-password")
|
||||||
public class ResetPasswordServlet extends HttpServlet {
|
public class ResetPasswordServlet extends HttpServlet {
|
||||||
@@ -29,6 +30,10 @@ public class ResetPasswordServlet extends HttpServlet {
|
|||||||
* @throws ServletException si une erreur de servlet survient
|
* @throws ServletException si une erreur de servlet survient
|
||||||
*/
|
*/
|
||||||
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
|
||||||
|
if (request.getSession().getAttribute("translator") == null) {
|
||||||
|
request.getSession().setAttribute("language", "FR");
|
||||||
|
request.getSession().setAttribute("translator", Translator.generateTranslator(request.getSession(), request.getServletContext()));
|
||||||
|
}
|
||||||
RecoveryPasswordToken token = findRecoveryToken(request.getParameter("token"));
|
RecoveryPasswordToken token = findRecoveryToken(request.getParameter("token"));
|
||||||
if (token == null) {
|
if (token == null) {
|
||||||
request.getRequestDispatcher("/WEB-INF/pages/errors/invalid-token-password.jsp").forward(request, response);
|
request.getRequestDispatcher("/WEB-INF/pages/errors/invalid-token-password.jsp").forward(request, response);
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
|
<%@ page import="uppa.project.web.translation.Translator" %>
|
||||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
||||||
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
||||||
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<layout:error message="Token expiré">
|
<layout:error message="${translator.translate('expired_token')}">
|
||||||
<a href="login" class="button is-primary is-fullwidth has-text-white">
|
<a href="login" class="button is-primary is-fullwidth has-text-white">
|
||||||
Retour à la page de connexion
|
${translator.translate('error_token_go_to_connection_page')}
|
||||||
</a>
|
</a>
|
||||||
</layout:error>
|
</layout:error>
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
|
<%@ page import="uppa.project.web.translation.Translator" %>
|
||||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
||||||
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<layout:error message="Token invalide">
|
<layout:error message="${translator.translate('invalid_token')}">
|
||||||
<a href="login" class="button is-primary is-fullwidth has-text-white">
|
<a href="login" class="button is-primary is-fullwidth has-text-white">
|
||||||
Retour à la page de connexion
|
${translator.translate('error_token_go_to_connection_page')}
|
||||||
</a>
|
</a>
|
||||||
</layout:error>
|
</layout:error>
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
|
<%@ page import="uppa.project.web.translation.Translator" %>
|
||||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
||||||
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
||||||
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<layout:form title="Mot de passe oublié">
|
<layout:form title="${translator.translate('forgotten_title')}">
|
||||||
<jsp:attribute name="script">
|
<jsp:attribute name="script">
|
||||||
<script defer type="module" src="${pageContext.request.contextPath}/static/js/form/forgotten-password.js"></script>
|
<script defer type="module" src="${pageContext.request.contextPath}/static/js/form/forgotten-password.js"></script>
|
||||||
</jsp:attribute>
|
</jsp:attribute>
|
||||||
@@ -12,7 +14,7 @@
|
|||||||
<div class="columns is-centered">
|
<div class="columns is-centered">
|
||||||
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h1 class="title has-text-centered">Mot de passe oublié ?</h1>
|
<h1 class="title has-text-centered">${translator.translate('forgotten_title')}</h1>
|
||||||
<form:forgotten-password/>
|
<form:forgotten-password/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
|
<%@ page import="uppa.project.web.translation.Translator" %>
|
||||||
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
||||||
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
||||||
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<layout:form title="Récuperation mot de passe">
|
<layout:form title="${translator.translate('reset_title')}">
|
||||||
<jsp:attribute name="script">
|
<jsp:attribute name="script">
|
||||||
<script defer type="module" src="${pageContext.request.contextPath}/static/js/form/reset-password.js"></script>
|
<script defer type="module" src="${pageContext.request.contextPath}/static/js/form/reset-password.js"></script>
|
||||||
</jsp:attribute>
|
</jsp:attribute>
|
||||||
@@ -12,12 +14,8 @@
|
|||||||
<div class="columns is-centered">
|
<div class="columns is-centered">
|
||||||
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<h1 class="title has-text-centered">Récupération de mot de passe</h1>
|
<h1 class="title has-text-centered">${translator.translate('reset_title')}</h1>
|
||||||
<form:reset-password/>
|
<form:reset-password/>
|
||||||
<hr/>
|
|
||||||
<p class="content has-text-centered">
|
|
||||||
Déjà inscrit ? <a href="${pageContext.request.contextPath}/login">Se connecter</a>
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,47 +1,18 @@
|
|||||||
<%@tag description="form/forgotten-password" pageEncoding="UTF-8" %>
|
<%@tag description="form/forgotten-password" pageEncoding="UTF-8" %>
|
||||||
|
<%@ tag import="uppa.project.web.translation.Translator" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<form id="forgotten-password-form" action="${pageContext.request.contextPath}/forgotten-password" method="post">
|
<form id="forgotten-password-form" action="${pageContext.request.contextPath}/forgotten-password" method="post">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="email">Email</label>
|
<label class="label" for="email">${translator.translate('forgotten_title')}</label>
|
||||||
<div class="control has-icons-left">
|
<div class="control has-icons-left">
|
||||||
<input id="email" name="email" placeholder="johndoe@exemple.com" class="input is-fullwidth" required/>
|
<input id="email" name="email" placeholder="johndoe@exemple.com" class="input is-fullwidth" required/>
|
||||||
<span class="icon is-small is-left">
|
<span class="icon is-small is-left">
|
||||||
<i class="fas fa-envelope"></i>
|
<i class="fas fa-envelope"></i>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="help">Veuillez entrer votre email pour obtenir un lien de récupération</div>
|
<div class="help">${translator.translate('forgotten_email_description')}</div>
|
||||||
</div>
|
</div>
|
||||||
<input type="submit" class="button is-primary is-fullwidth has-text-white" value="Envoyer">
|
<input type="submit" class="button is-primary is-fullwidth has-text-white" value="${translator.translate('forgotten_submit')}">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<%--<script defer type="module">--%>
|
|
||||||
<%-- const forgottenPasswordForm = document.querySelector("form#forgotten-password-form");--%>
|
|
||||||
|
|
||||||
<%-- // Champ email--%>
|
|
||||||
<%-- const inputs = [document.querySelector("input#email")];--%>
|
|
||||||
|
|
||||||
<%-- // Ajout de l'écouteur d'événement sur la soumission du formulaire--%>
|
|
||||||
<%-- forgottenPasswordForm.addEventListener("submit", onSubmit)--%>
|
|
||||||
|
|
||||||
<%-- /**--%>
|
|
||||||
<%-- * Gestion de la soumission du formulaire--%>
|
|
||||||
<%-- * @param event {Event} - Événement de soumission du formulaire--%>
|
|
||||||
<%-- */--%>
|
|
||||||
<%-- function onSubmit(event) {--%>
|
|
||||||
<%-- event.preventDefault();--%>
|
|
||||||
|
|
||||||
<%-- const {action, method} = forgottenPasswordForm;--%>
|
|
||||||
|
|
||||||
<%-- const url = new URL(action);--%>
|
|
||||||
<%-- url.searchParams.append("email", emailInput.value);--%>
|
|
||||||
|
|
||||||
<%-- fetch(url, {headers: {"Content-Type": "application/json"}, method})--%>
|
|
||||||
<%-- .then(res => res.json())--%>
|
|
||||||
<%-- .then(data => {--%>
|
|
||||||
<%-- if (data.code !== 200) throw new Error(data.message);--%>
|
|
||||||
<%-- })--%>
|
|
||||||
<%-- .then(() => window.location.href = "${pageContext.request.contextPath}/login")--%>
|
|
||||||
<%-- .catch(onError);--%>
|
|
||||||
<%-- }--%>
|
|
||||||
<%--</script>--%>
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,23 +1,25 @@
|
|||||||
<%@tag description="form/register" pageEncoding="UTF-8" %>
|
<%@tag description="form/register" pageEncoding="UTF-8" %>
|
||||||
|
<%@ tag import="uppa.project.web.translation.Translator" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
|
|
||||||
<form id="reset-password-form" action="${pageContext.request.contextPath}/reset-password" method="post">
|
<form id="reset-password-form" action="${pageContext.request.contextPath}/reset-password" method="post">
|
||||||
<input type="hidden" id="token" name="token" value="${pageContext.request.getParameter("token")}">
|
<input type="hidden" id="token" name="token" value="${pageContext.request.getParameter("token")}">
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="password">Mot de passe</label>
|
<label class="label" for="password">${translator.translate('user_password')}</label>
|
||||||
<div class="control has-icons-left">
|
<div class="control has-icons-left">
|
||||||
<input id="password" name="password" type="password" class="input is-fullwidth" required>
|
<input id="password" name="password" type="password" placeholder="${translator.translate('user_password')}" class="input is-fullwidth" required>
|
||||||
<span class="icon is-small is-left"><i class="fas fa-lock"></i></span>
|
<span class="icon is-small is-left"><i class="fas fa-lock"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<label class="label" for="repassword">Confirmez le mot de passe</label>
|
<label class="label" for="repassword">${translator.translate('user_confirm_password')}</label>
|
||||||
<div class="control has-icons-left">
|
<div class="control has-icons-left">
|
||||||
<input id="repassword" name="repassword" type="password" class="input is-fullwidth" required>
|
<input id="repassword" name="repassword" placeholder="${translator.translate('user_confirm_password_input')}" type="password" class="input is-fullwidth" required>
|
||||||
<span class="icon is-small is-left"><i class="fas fa-lock"></i></span>
|
<span class="icon is-small is-left"><i class="fas fa-lock"></i></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<input type="submit" class="button is-primary has-text-white is-fullwidth" value="Envoyer">
|
<input type="submit" class="button is-primary has-text-white is-fullwidth" value="${translator.translate('reset_submit')}">
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,11 @@
|
|||||||
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
<%@taglib prefix="layout" tagdir="/WEB-INF/tags/layouts" %>
|
||||||
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
<%@taglib prefix="component" tagdir="/WEB-INF/tags/components" %>
|
||||||
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
<%@taglib prefix="form" tagdir="/WEB-INF/tags/forms" %>
|
||||||
|
<%@ tag import="uppa.project.web.translation.Translator" %>
|
||||||
|
<% Translator translator = (Translator) request.getSession().getAttribute("translator"); %>
|
||||||
<%@attribute name="message"%>
|
<%@attribute name="message"%>
|
||||||
|
|
||||||
<layout:base title="Erreur">
|
<layout:base title="${translator.translate('error')}">
|
||||||
<component:hero>
|
<component:hero>
|
||||||
<div class="columns is-centered">
|
<div class="columns is-centered">
|
||||||
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
<div class="column is-5-tablet is-5-desktop is-5-widescreen">
|
||||||
|
|||||||
@@ -120,8 +120,8 @@
|
|||||||
"FR": "Les mots de passe ne correspondent pas"
|
"FR": "Les mots de passe ne correspondent pas"
|
||||||
},
|
},
|
||||||
"forgotten_title" : {
|
"forgotten_title" : {
|
||||||
"EN": "Forgotten password",
|
"EN": "Forgotten password ?",
|
||||||
"FR": "Mot de passe oublié"
|
"FR": "Mot de passe oublié ?"
|
||||||
},
|
},
|
||||||
"forgotten_submit" : {
|
"forgotten_submit" : {
|
||||||
"EN": "Send email",
|
"EN": "Send email",
|
||||||
@@ -138,5 +138,69 @@
|
|||||||
"forgotten_email_description" : {
|
"forgotten_email_description" : {
|
||||||
"EN": "Enter the email address associated with your account to receive a password reset link.",
|
"EN": "Enter the email address associated with your account to receive a password reset link.",
|
||||||
"FR": "Entrez l'adresse email associée à votre compte pour recevoir un lien de réinitialisation de mot de passe."
|
"FR": "Entrez l'adresse email associée à votre compte pour recevoir un lien de réinitialisation de mot de passe."
|
||||||
|
},
|
||||||
|
"forgotten_email_object" : {
|
||||||
|
"EN": "Reset password",
|
||||||
|
"FR": "Réinitialiser le mot de passe"
|
||||||
|
},
|
||||||
|
"forgotten_email_content" : {
|
||||||
|
"EN": "Hello,\n\nYou have requested a password reset.\nTo do this, please click on the following link: {0}/reset-password?token={1}\n\nThis link is valid for 10 minutes.\nIf you are not the origin of this request, please ignore this email.\n\nSincerely,\nThe CardRush team\n\n\n\nThis message is generated automatically, please do not reply to it.\nCardRush is the property of CardRush Corporation, 2024. All rights reserved.\nCardRush Corporation, 2024, 1 rue de la programmation web, 64000 Pau, France\nFictitious company created as part of a university project. Project authors: MITRESSÉ Kevin & VABRE Lucàs",
|
||||||
|
"FR": "Bonjour,\n\nVous avez demandé la réinitialisation de votre mot de passe.\nPour cela, veuillez cliquer sur le lien suivant :{0}/reset-password?token={1}\n\nCe lien est valable 10 minutes.\nSi vous n'êtes pas à l'origine de cette demande, ne prenez pas compte de ce mail.\n\nCordialement,\nL'équipe CardRush\n\n\n\nCe message est généré automatiquement, merci de ne pas y répondre.\nCardRush est la propriété de CardRush Corporation, 2024. Tous droits réservés.\\nCardRush Corporation, 2024, 1 rue de la programmation web, 64000 Pau, France\nSociété fictive créée dans le cadre d'un projet universitaire. Auteurs du projet: MITRESSÉ Kevin & VABRE Lucàs"
|
||||||
|
},
|
||||||
|
"reset_title" : {
|
||||||
|
"EN": "Reset password",
|
||||||
|
"FR": "Réinitialisation du mot de passe"
|
||||||
|
},
|
||||||
|
"reset_submit" : {
|
||||||
|
"EN": "Reset",
|
||||||
|
"FR": "Réinitialiser"
|
||||||
|
},
|
||||||
|
"invalid_token" : {
|
||||||
|
"EN": "Invalid token",
|
||||||
|
"FR": "Token invalide"
|
||||||
|
},
|
||||||
|
"expired_token" : {
|
||||||
|
"EN": "Expired token",
|
||||||
|
"FR": "Token expiré"
|
||||||
|
},
|
||||||
|
"error_token_go_to_connection_page" :{
|
||||||
|
"EN": "Return to the login page",
|
||||||
|
"FR": "Retour à la page de connexion"
|
||||||
|
},
|
||||||
|
"error" : {
|
||||||
|
"EN": "Error",
|
||||||
|
"FR": "Erreur"
|
||||||
|
},
|
||||||
|
|
||||||
|
"reset_success" : {
|
||||||
|
"EN": "Password reset successfully",
|
||||||
|
"FR": "Mot de passe réinitialisé avec succès"
|
||||||
|
},
|
||||||
|
"reset_password" : {
|
||||||
|
"EN": "New password",
|
||||||
|
"FR": "Nouveau mot de passe"
|
||||||
|
},
|
||||||
|
"reset_confirm_password" : {
|
||||||
|
"EN": "Confirm new password",
|
||||||
|
"FR": "Confirmer le nouveau mot de passe"
|
||||||
|
},
|
||||||
|
"reset_password_description" : {
|
||||||
|
"EN": "Enter your new password",
|
||||||
|
"FR": "Entrez votre nouveau mot de passe"
|
||||||
|
},
|
||||||
|
"reset_error_password" : {
|
||||||
|
"EN": "Passwords do not match",
|
||||||
|
"FR": "Les mots de passe ne correspondent pas"
|
||||||
|
},
|
||||||
|
"profile_title" : {
|
||||||
|
"EN": "Profile",
|
||||||
|
"FR": "Profil"
|
||||||
|
},
|
||||||
|
"profile_edit" : {
|
||||||
|
"EN": "Edit",
|
||||||
|
"FR": "Modifier"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user