patch session utilisateur v2

This commit is contained in:
jleroy
2024-04-24 09:23:55 +02:00
parent f6870a4dbb
commit 802fcdd8ea
3 changed files with 69 additions and 24 deletions

View File

@@ -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";
}
}
}