Merge branch 'Johan' into Olivier

This commit is contained in:
Parpaillax
2024-04-24 09:24:16 +02:00
3 changed files with 69 additions and 24 deletions

View File

@@ -12,14 +12,15 @@ public class UserProfil {
private String rue; private String rue;
private String code_postal; private String code_postal;
private String ville; private String ville;
private String password; //Voir la sécurité du mot de passe private String password;
private String confirmPassword;
private float credit; private float credit;
private boolean isAdmin; private boolean isAdmin;
//Constructeur //Constructeur
public UserProfil(){} 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); setId(id);
setPrenom(prenom); setPrenom(prenom);
setNom(nom); setNom(nom);
@@ -30,6 +31,7 @@ public class UserProfil {
setCode_postal(code_postal); setCode_postal(code_postal);
setVille(ville); setVille(ville);
setPassword(password); setPassword(password);
setConfirmPassword(confirmPassword);
setCredit(credit); setCredit(credit);
setAdmin(isAdmin); setAdmin(isAdmin);
} }
@@ -115,6 +117,14 @@ public class UserProfil {
this.password = password; this.password = password;
} }
public String getConfirmPassword() {
return password;
}
public void setConfirmPassword(String confirmPassword) {
this.confirmPassword = confirmPassword;
}
public float getCredit() { public float getCredit() {
return credit; return credit;
} }

View File

@@ -1,6 +1,9 @@
package fr.eni.enchere.controllers; package fr.eni.enchere.controllers;
import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.validation.BindingResult;
import fr.eni.enchere.bll.UserService; import fr.eni.enchere.bll.UserService;
import fr.eni.enchere.bo.UserProfil; import fr.eni.enchere.bo.UserProfil;
@@ -14,9 +17,11 @@ public class InscriptionController {
@Autowired @Autowired
private final UserService userService; private final UserService userService;
private PasswordEncoder passwordEncoder;
public InscriptionController(UserService userService) { public InscriptionController(UserService userService, PasswordEncoder passwordEncoder) {
this.userService = userService; this.userService = userService;
this.passwordEncoder = passwordEncoder;
} }
@GetMapping @GetMapping
@@ -26,10 +31,33 @@ public class InscriptionController {
} }
@PostMapping("/newUser") @PostMapping("/newUser")
public String setUser(@ModelAttribute UserProfil user) { public String setUser(@ModelAttribute("userProfile") UserProfil userProfile, BindingResult result) {
//Ajouter vérification du formulaire -> @RequestParam("confirmPassword") String confirmPassword // Obtenez l'authentification actuelle
userService.setUtilisateur(user); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
return "redirect:/accueil"; // 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";
}
} }
} }

View File

@@ -106,34 +106,41 @@
</ul> </ul>
</span> </span>
</div> </div>
<!-- Champ Mot de passe--> <!-- Champ Mot de passe actuel-->
<div class="champ-saisie"> <div class="champ-saisie">
<label for="password">Mot de passe actuel: </label> <label for="currentPassword">Mot de passe actuel: </label>
<div> <div>
<input type="password" th:field="*{password}" id="password" /> <input type="password" th:field="*{currentPassword}" id="currentPassword" />
</div> </div>
<span style="color: red;" th:if="${#fields.hasErrors('password')}"> <span style="color: red;" th:if="${#fields.hasErrors('currentPassword')}">
<ul> <ul>
<li th:each="erreur: ${#fields.errors('password')}" th:text="${erreur}"></li> <li th:each="erreur: ${#fields.errors('currentPassword')}" th:text="${erreur}"></li>
</ul> </ul>
</span> </span>
</div> </div>
<!-- Champ Nouveau mot de passe-->
<div class="champ-saisie"> <div class="champ-saisie">
<label for="password">Nouveau mot de passe: </label> <label for="newPassword">Nouveau mot de passe: </label>
<div> <div>
<input type="password" th:field="*{password}" id="password" /> <input type="password" th:field="*{newPassword}" id="newPassword" />
</div> </div>
<span style="color: red;" th:if="${#fields.hasErrors('password')}"> <span style="color: red;" th:if="${#fields.hasErrors('newPassword')}">
<ul> <ul>
<li th:each="erreur: ${#fields.errors('password')}" th:text="${erreur}"></li> <li th:each="erreur: ${#fields.errors('newPassword')}" th:text="${erreur}"></li>
</ul> </ul>
</span> </span>
</div> </div>
<!-- Champ Confirmation du nouveau mot de passe-->
<div class="champ-saisie"> <div class="champ-saisie">
<label for="password">Confirmation: </label> <label for="confirmPassword">Confirmation du nouveau mot de passe: </label>
<div> <div>
<input type="password" id="password" /> <input type="password" th:field="*{confirmPassword}" id="confirmPassword" />
</div> </div>
<span style="color: red;" th:if="${#fields.hasErrors('confirmPassword')}">
<ul>
<li th:each="erreur: ${#fields.errors('confirmPassword')}" th:text="${erreur}"></li>
</ul>
</span>
</div> </div>
<div>Crédits: <span th:text="${userProfile.credit}"></span></div> <div>Crédits: <span th:text="${userProfile.credit}"></span></div>
<!-- Input cacher qui permet de stocker l'id du compte utilisateur à mettre à jour --> <!-- Input cacher qui permet de stocker l'id du compte utilisateur à mettre à jour -->