diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index deece3c..969d08a 100644 --- a/src/main/java/fr/eni/enchere/controllers/AccueilController.java +++ b/src/main/java/fr/eni/enchere/controllers/AccueilController.java @@ -48,7 +48,6 @@ public class AccueilController { public String viewAccueil(HttpServletRequest request, @AuthenticationPrincipal UserDetails userDetails, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "6") int size, Model model, HttpSession session) { - logger.error("test du logger"); // Récupérer les critères de recherche de la session String searchTitle = (String) session.getAttribute("searchTitle"); diff --git a/src/main/java/fr/eni/enchere/dal/ForgotPasswordRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/ForgotPasswordRepositoryImpl.java index c65104f..aef0052 100644 --- a/src/main/java/fr/eni/enchere/dal/ForgotPasswordRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/ForgotPasswordRepositoryImpl.java @@ -21,7 +21,7 @@ import java.util.Calendar; @Primary public class ForgotPasswordRepositoryImpl implements ForgotPasswordRepository { - static final String keychain = "0123456789azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN" ; + static final String keychain = "0123456789azertyuiopqsdfghjklmwxcvbnAZERTYUIOPQSDFGHJKLMWXCVBN"; static SecureRandom randomValue = new SecureRandom(); @Autowired @@ -65,11 +65,7 @@ public class ForgotPasswordRepositoryImpl implements ForgotPasswordRepository { @Override public void setForgotPasswords(String email) { - //Générer un code - StringBuilder linkCreate = new StringBuilder(50); - for (int i = 0; i < 50; i ++){ - linkCreate.append(keychain.charAt(randomValue.nextInt(keychain.length()))); - } + String token = TokenGenreate(); //Récupérer la date actuelle plus 10 minutes en plus Calendar dateNow = Calendar.getInstance(); Calendar dateAgo = Calendar.getInstance(); @@ -78,18 +74,39 @@ public class ForgotPasswordRepositoryImpl implements ForgotPasswordRepository { String sql = "INSERT INTO FORGOT (email, lien, dateCreate, dateExpire) VALUES (:email, :lien, :dateCreate, :dateExpire)"; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("email", email); - parameters.addValue("lien", linkCreate.toString()); + parameters.addValue("lien", token); parameters.addValue("dateCreate", dateNow.getTime()); parameters.addValue("dateExpire", dateAgo.getTime()); namedParameterJdbcTemplate.update(sql, parameters); //Envoyer un email - String link = "https://eni.enchere.horya.fr/forgotPassword?link=" + linkCreate.toString(); - String linkLocal = "http://localhost:8800/forgotPassword?link=" + linkCreate.toString(); + String link = "https://eni.enchere.horya.fr/forgotPassword?link=" + token; + String linkLocal = "http://localhost:8800/forgotPassword?link=" + token; SimpleMailMessage message = new SimpleMailMessage(); message.setFrom("support@horya.fr"); message.setTo(email); message.setSubject("ENI Enchere - Demmande de changement de mot de passe"); - message.setText("Bonjour,\n\nVous avez demandé une réinitialisation de votre mot de passe. Veuillez utiliser le lien suivant pour procéder à la réinitialisation : " + link + "\n\n" + linkLocal); + message.setText("Bonjour,\n\nVous avez demandé une réinitialisation de votre mot de passe. Veuillez utiliser le lien suivant pour procéder à la réinitialisation : " + link + "\nOU\n" + linkLocal); javaMailSender.send(message); } + + private String TokenGenreate(){ + //Déclaration de variable + StringBuilder linkCreate = new StringBuilder(50); + String sql = "SELECT * FROM FORGOT WHERE lien = ?"; + boolean isValide = false; + //Traitement + while (isValide == false){ + //Générer un code + for (int i = 0; i < 50; i ++){ + linkCreate.append(keychain.charAt(randomValue.nextInt(keychain.length()))); + } + //Vérifier existance dans la base de donnée + try { + jdbcTemplate.queryForObject(sql, new ForgotPasswordRepositoryImpl.ForgotPasswordRowMapper(), linkCreate.toString()); + } catch (EmptyResultDataAccessException e) { + isValide = true; + } + } + return linkCreate.toString(); + } } diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index b0b36e0..dbd3698 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -10,11 +10,9 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; -import static javax.management.Query.and; - @Configuration @EnableWebSecurity -public class WebSecurityConfig{ +public class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {