diff --git a/src/main/java/fr/eni/enchere/bo/UserProfil.java b/src/main/java/fr/eni/enchere/bo/UserProfil.java index 4c17b05..9677c64 100644 --- a/src/main/java/fr/eni/enchere/bo/UserProfil.java +++ b/src/main/java/fr/eni/enchere/bo/UserProfil.java @@ -12,14 +12,15 @@ public class UserProfil { private String rue; private String code_postal; private String ville; - private String password; //Voir la sécurité du mot de passe + private String password; + private String confirmPassword; private float credit; private boolean isAdmin; //Constructeur public UserProfil(){} - public UserProfil(int id, String pseudo, String nom, String prenom, String email, String telephone, String rue, String code_postal, String ville, String password, int credit, boolean isAdmin) { + public UserProfil(int id, String pseudo, String nom, String prenom, String email, String telephone, String rue, String code_postal, String ville, String password, String confirmPassword, int credit, boolean isAdmin) { setId(id); setPrenom(prenom); setNom(nom); @@ -30,6 +31,7 @@ public class UserProfil { setCode_postal(code_postal); setVille(ville); setPassword(password); + setConfirmPassword(confirmPassword); setCredit(credit); setAdmin(isAdmin); } @@ -115,6 +117,14 @@ public class UserProfil { this.password = password; } + public String getConfirmPassword() { + return password; + } + + public void setConfirmPassword(String confirmPassword) { + this.confirmPassword = confirmPassword; + } + public float getCredit() { return credit; } diff --git a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java index fadce9f..2e9c9a6 100644 --- a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java +++ b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java @@ -1,6 +1,9 @@ package fr.eni.enchere.controllers; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.validation.BindingResult; import fr.eni.enchere.bll.UserService; import fr.eni.enchere.bo.UserProfil; @@ -14,9 +17,11 @@ public class InscriptionController { @Autowired private final UserService userService; + private PasswordEncoder passwordEncoder; - public InscriptionController(UserService userService) { + public InscriptionController(UserService userService, PasswordEncoder passwordEncoder) { this.userService = userService; + this.passwordEncoder = passwordEncoder; } @GetMapping @@ -26,10 +31,33 @@ public class InscriptionController { } @PostMapping("/newUser") - public String setUser(@ModelAttribute UserProfil user) { - //Ajouter vérification du formulaire -> @RequestParam("confirmPassword") String confirmPassword - userService.setUtilisateur(user); - return "redirect:/accueil"; + 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.getPassword(), 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.getPassword().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"; + } } } diff --git a/src/main/resources/templates/editProfil.html b/src/main/resources/templates/editProfil.html index ca6c711..cf3aa04 100644 --- a/src/main/resources/templates/editProfil.html +++ b/src/main/resources/templates/editProfil.html @@ -106,34 +106,41 @@ - +
- +
- +
- - - + + +
+
- +
- +
- - - + + +
+
- +
- +
+ + +
Crédits: