feet: dev-web - update reset password and token generation

This commit is contained in:
kmitresse
2024-03-23 09:49:21 +01:00
parent c37fcfc8ca
commit f9622ec272
7 changed files with 40 additions and 41 deletions
@@ -50,6 +50,7 @@ public class RecoveryPasswordToken {
public RecoveryPasswordToken(String token, User user) {
this.token = token;
this.user = user;
this.expiresAt = new Date(new Date().getTime() + 600000);
}
/**
@@ -23,6 +23,9 @@ import uppa.project.pojo.User;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.*;
import uppa.project.provider.DotenvProvider;
import io.github.cdimascio.dotenv.Dotenv;
@WebServlet(name = "forgottenPasswordServlet", value = "/forgotten-password")
public class ForgottenPasswordServlet extends HttpServlet {
@@ -64,14 +67,11 @@ public class ForgottenPasswordServlet extends HttpServlet {
* @param token
*/
public void sendRecoveryEmail(String email, String token) {
String host = "smtp.gmail.com";
String port = "587";
//TODO: Set up environment variables
// String username = System.getenv("MAIL_USERNAME");
// String password = System.getenv("MAIL_PASSWORD");
String username = "kmitresse@gmail.com";
String password = "xwos ujwf cesq ocyt";
Dotenv dotEnv = DotenvProvider.getInstance();
String host = dotEnv.get("MAIL_HOST");
String port = dotEnv.get("MAIL_PORT");
String username = dotEnv.get("MAIL_USERNAME");
String password = dotEnv.get("MAIL_PASSWORD");
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
@@ -87,6 +87,7 @@ public class ForgottenPasswordServlet extends HttpServlet {
});
try {
String tomcatHost = dotEnv.get("TOMCAT_HOST");
// Création du message
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
@@ -94,7 +95,7 @@ public class ForgottenPasswordServlet extends HttpServlet {
message.setSubject("Réinitialisation de votre mot de passe");
message.setText("Bonjour,\n\n" +
"Vous avez demandé la réinitialisation de votre mot de passe.\n" +
"Pour cela, veuillez cliquer sur le lien suivant : http://localhost:8088/project_war_exploded/reset-password?token=" + token + "\n\n" +
"Pour cela, veuillez cliquer sur le lien suivant : http://localhost:"+tomcatHost+"/project_war_exploded/reset-password?token=" + token + "\n\n" +
"Cordialement,\n" +
"L'équipe CardRush");
// Envoi du message
@@ -19,9 +19,13 @@ public class ResetPasswordServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
RecoveryPasswordToken recoveryPasswordToken = findRecoveryToken(request.getParameter("token"));
if (recoveryPasswordToken == null) {
response.sendRedirect(request.getContextPath() + "/error?code=404");
RecoveryPasswordToken token = findRecoveryToken(request.getParameter("token"));
if (token == null) {
response.sendRedirect(request.getContextPath() + "/forgotten-password?error=invalid-token");
return;
}
if (token.getExpirationDate().compareTo(new java.util.Date()) > 0){
response.sendRedirect(request.getContextPath() + "/forgotten-password?error=expired-token");
return;
}
request.getRequestDispatcher("/WEB-INF/views/reset-password.jsp").forward(request, response);
@@ -44,7 +48,7 @@ public class ResetPasswordServlet extends HttpServlet {
System.out.println(!newPassword.equals(confirmPassword));
if (!newPassword.equals(confirmPassword)) {
System.out.println("ici");
response.sendRedirect(request.getContextPath() + "/reset-password?error=1&token=" + recoveryPasswordToken.getToken());
response.sendRedirect(request.getContextPath() + "/reset-password?error=matching-password&token=" + recoveryPasswordToken.getToken());
return;
}
user.setPassword(newPassword);
@@ -52,9 +56,9 @@ public class ResetPasswordServlet extends HttpServlet {
try {
daoJpaUser = new DAO_JPA_User();
daoJpaUser.update(user);
response.sendRedirect(request.getContextPath() + "/login?success=password-modified");
response.sendRedirect(request.getContextPath() + "/login?success=password-reseted");
} catch (DAOException e) {
response.sendRedirect(request.getContextPath() + "/reset-password?error=2");
response.sendRedirect(request.getContextPath() + "/reset-password?error=1");
}
}