diff --git a/src/main/java/fr/eni/enchere/bo/UserProfil.java b/src/main/java/fr/eni/enchere/bo/UserProfil.java index f0d49b4..c96e22b 100644 --- a/src/main/java/fr/eni/enchere/bo/UserProfil.java +++ b/src/main/java/fr/eni/enchere/bo/UserProfil.java @@ -122,7 +122,7 @@ public class UserProfil { } public String getConfirmPassword() { - return password; + return confirmPassword; } public void setConfirmPassword(String confirmPassword) { diff --git a/src/main/java/fr/eni/enchere/controllers/AccueilController.java b/src/main/java/fr/eni/enchere/controllers/AccueilController.java index bbceba6..bfd925b 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 { @PostMapping("/accueil") public String handleSearch(@RequestParam("searchTitle") String searchTitle, @RequestParam(value = "searchCategory", required = false) Integer searchCategory, Model model) { - System.out.println("test"); return viewAccueil(searchTitle, searchCategory, model); } diff --git a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java index f0c3661..99a5ce0 100644 --- a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java +++ b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java @@ -32,32 +32,7 @@ public class InscriptionController { @PostMapping("/newUser") public String setUser(@ModelAttribute("userProfile") UserProfil userProfile, BindingResult result) { - // Obtenez l'authentification actuelle - Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - // Vérifiez si l'utilisateur est authentifié - if (!authentication.getName().equals("anonymousUser")) { - // Obtenez les détails de l'utilisateur authentifié - String username = authentication.getName(); - // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur - UserProfil currentUserProfile = userService.utilisateurByName(username); - // Vérifiez si le mot de passe actuel correspond à celui stocké dans la base de données - if (!passwordEncoder.matches(userProfile.getNewPassword(), currentUserProfile.getPassword())) { - // Mot de passe actuel incorrect, renvoyer une erreur - result.rejectValue("currentPassword", "invalid", "Mot de passe actuel incorrect"); - return "editProfil"; // Rediriger vers la page de modification du profil avec une erreur - } - // Vérifiez si le nouveau mot de passe et sa confirmation correspondent - if (!userProfile.getNewPassword().equals(userProfile.getConfirmPassword())) { - // Mauvaise correspondance entre le nouveau mot de passe et sa confirmation, renvoyer une erreur - result.rejectValue("confirmPassword", "invalid", "La confirmation du mot de passe ne correspond pas au nouveau mot de passe"); - return "editProfil"; // Rediriger vers la page de modification du profil avec une erreur - } - // Mettez à jour le mot de passe de l'utilisateur avec le nouveau mot de passe - userService.setUtilisateur(currentUserProfile); - return "redirect:/profil"; // Rediriger vers la page de profil après la modification réussie - } else { - return "accueil"; - } + userService.setUtilisateur(userProfile); + return "redirect:/login"; } - } diff --git a/src/main/java/fr/eni/enchere/controllers/LoginController.java b/src/main/java/fr/eni/enchere/controllers/LoginController.java index b81fb7f..c6fe535 100644 --- a/src/main/java/fr/eni/enchere/controllers/LoginController.java +++ b/src/main/java/fr/eni/enchere/controllers/LoginController.java @@ -37,6 +37,6 @@ public class LoginController { @GetMapping("/logout") public String logout(Model modele) { - return "security/logout"; + return "security/login"; } } diff --git a/src/main/java/fr/eni/enchere/controllers/ProfilController.java b/src/main/java/fr/eni/enchere/controllers/ProfilController.java index fe66b44..ee7756a 100644 --- a/src/main/java/fr/eni/enchere/controllers/ProfilController.java +++ b/src/main/java/fr/eni/enchere/controllers/ProfilController.java @@ -1,10 +1,13 @@ package fr.eni.enchere.controllers; import fr.eni.enchere.bo.UserProfil; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.ui.Model; import fr.eni.enchere.bll.UserService; import org.springframework.stereotype.Controller; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.security.core.Authentication; @@ -15,9 +18,12 @@ import org.springframework.security.core.context.SecurityContextHolder; public class ProfilController { private final UserService userService; + private PasswordEncoder passwordEncoder; - public ProfilController(UserService userService) { + + public ProfilController(UserService userService, PasswordEncoder passwordEncoder) { this.userService = userService; + this.passwordEncoder = passwordEncoder; } @GetMapping @@ -76,10 +82,39 @@ public class ProfilController { String username = authentication.getName(); // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur UserProfil userProfile = userService.utilisateurByName(username); - System.out.println(userProfile.getId()); //Supprimer le compte userService.deleteUtilisateur(userProfile.getId()); //ATTENTION AJOUTER LA DECONNEXION return "redirect:/accueil"; } + + @PostMapping("/updateUser") + public String setUser(@ModelAttribute("userProfile") UserProfil userProfile, BindingResult result) { + // Obtenez l'authentification actuelle + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + // Vérifiez si l'utilisateur est authentifié + if (!authentication.getName().equals("anonymousUser")) { + // Obtenez les détails de l'utilisateur authentifié + String username = authentication.getName(); + // Utilisez le service approprié pour récupérer les informations de l'utilisateur à partir du nom d'utilisateur + UserProfil currentUserProfile = userService.utilisateurByName(username); + // Vérifiez si le mot de passe actuel correspond à celui stocké dans la base de données + if (!passwordEncoder.matches(userProfile.getCurrentPassword(), currentUserProfile.getPassword())) { + // Mot de passe actuel incorrect, renvoyer une erreur + result.rejectValue("currentPassword", "invalid", "Mot de passe actuel incorrect"); + return "editProfil"; // Rediriger vers la page de modification du profil avec une erreur + } + // Vérifiez si le nouveau mot de passe et sa confirmation correspondent + if (!userProfile.getNewPassword().equals(userProfile.getConfirmPassword())) { + // Mauvaise correspondance entre le nouveau mot de passe et sa confirmation, renvoyer une erreur + result.rejectValue("confirmPassword", "invalid", "La confirmation du mot de passe ne correspond pas au nouveau mot de passe"); + return "editProfil"; // Rediriger vers la page de modification du profil avec une erreur + } + // Mettez à jour le mot de passe de l'utilisateur avec le nouveau mot de passe + userService.setUtilisateur(userProfile); + return "redirect:/profil"; // Rediriger vers la page de profil après la modification réussie + } else { + return "accueil"; + } + } } diff --git a/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java index b0c0f96..6d8a90a 100644 --- a/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/CategorieRepositoryImpl.java @@ -37,7 +37,6 @@ public class CategorieRepositoryImpl implements CategorieRepository { public List findAllCategories() { String sql = "SELECT * FROM CATEGORIES"; List categories = jdbcTemplate.query(sql, new CategorieRowMapper()); - System.out.println(categories); return categories; } diff --git a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java index 0234421..7f31415 100644 --- a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java @@ -96,11 +96,11 @@ public class UserRepositoryImpl implements UserRepository { //Mettre à jour String sql = "UPDATE UTILISATEURS SET pseudo = :pseudo, nom = :nom, prenom = :prenom, email = :email, telephone = :telephone, rue = :rue, code_postal = :code_postal, ville = :ville, mot_de_passe = :mot_de_passe WHERE no_utilisateur = :id"; MapSqlParameterSource parameters = new MapSqlParameterSource(); - if(utilisateur.getPassword().isEmpty()){ + if(utilisateur.getNewPassword().isEmpty()){ sql = "UPDATE UTILISATEURS SET pseudo = :pseudo, nom = :nom, prenom = :prenom, email = :email, telephone = :telephone, rue = :rue, code_postal = :code_postal, ville = :ville WHERE no_utilisateur = :id"; }else{ sql = "UPDATE UTILISATEURS SET pseudo = :pseudo, nom = :nom, prenom = :prenom, email = :email, telephone = :telephone, rue = :rue, code_postal = :code_postal, ville = :ville, mot_de_passe = :mot_de_passe WHERE no_utilisateur = :id"; - parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getPassword())); + parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getNewPassword())); } parameters.addValue("pseudo", utilisateur.getPseudo()); parameters.addValue("nom", utilisateur.getNom()); @@ -110,7 +110,7 @@ public class UserRepositoryImpl implements UserRepository { parameters.addValue("rue", utilisateur.getRue()); parameters.addValue("code_postal", utilisateur.getCode_postal()); parameters.addValue("ville", utilisateur.getVille()); - parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getPassword())); // Assurez-vous de hasher le nouveau mot de passe si nécessaire + parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getNewPassword())); // Assurez-vous de hasher le nouveau mot de passe si nécessaire parameters.addValue("id", utilisateur.getId()); namedParameterJdbcTemplate.update(sql, parameters); } diff --git a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java index 6c8b697..fd4ad9b 100644 --- a/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java +++ b/src/main/java/fr/eni/enchere/security/WebSecurityConfig.java @@ -24,7 +24,7 @@ public class WebSecurityConfig{ .anyRequest().authenticated()) .formLogin((form) -> form.loginPage("/login").defaultSuccessUrl("/", true)) .logout((logout) -> logout.clearAuthentication(true).invalidateHttpSession(true) - .deleteCookies("JSESSIONID").logoutSuccessUrl("/logout") + .deleteCookies("JSESSIONID").logoutSuccessUrl("/login") .logoutRequestMatcher(new AntPathRequestMatcher("/logout")).permitAll()); return http.build(); diff --git a/src/main/resources/templates/editProfil.html b/src/main/resources/templates/editProfil.html index d04a20b..446b8c7 100644 --- a/src/main/resources/templates/editProfil.html +++ b/src/main/resources/templates/editProfil.html @@ -8,7 +8,7 @@

Mon profil

-
+ @@ -136,7 +136,7 @@
- +
    diff --git a/src/main/resources/templates/modele-page.html b/src/main/resources/templates/modele-page.html index 5d4572f..dab2b58 100644 --- a/src/main/resources/templates/modele-page.html +++ b/src/main/resources/templates/modele-page.html @@ -28,7 +28,7 @@ Mon profile