diff --git a/src/main/java/fr/eni/enchere/bll/UserService.java b/src/main/java/fr/eni/enchere/bll/UserService.java index 1a258d1..54b3110 100644 --- a/src/main/java/fr/eni/enchere/bll/UserService.java +++ b/src/main/java/fr/eni/enchere/bll/UserService.java @@ -8,6 +8,8 @@ public interface UserService { List listeUtilisateurs(); UserProfil utilisateurById(int id); UserProfil utilisateurByName(String username); + List listPseudo(); + List listEmail(); void setUtilisateur(UserProfil utilisateur); void deleteUtilisateur(int id); } diff --git a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java index 9938c0e..397facc 100644 --- a/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java +++ b/src/main/java/fr/eni/enchere/bll/UserServiceImpl.java @@ -30,6 +30,16 @@ public class UserServiceImpl implements UserService { return userRepository.findByUsername(username); } + @Override + public List listPseudo() { + return userRepository.findAllUsernames(); + } + + @Override + public List listEmail() { + return userRepository.findAllEmail(); + } + @Override public void setUtilisateur(UserProfil utilisateur) { userRepository.save(utilisateur); diff --git a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java index 99a5ce0..d50902a 100644 --- a/src/main/java/fr/eni/enchere/controllers/InscriptionController.java +++ b/src/main/java/fr/eni/enchere/controllers/InscriptionController.java @@ -11,6 +11,8 @@ import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Controller @RequestMapping("/inscription") public class InscriptionController { @@ -32,6 +34,21 @@ public class InscriptionController { @PostMapping("/newUser") public String setUser(@ModelAttribute("userProfile") UserProfil userProfile, BindingResult result) { + // Vérifier si le pseudo existe déjà + List allUsernames = userService.listPseudo(); + if (allUsernames.contains(userProfile.getPseudo())) { + result.rejectValue("pseudo", "error.userProfile", "Ce pseudo est déjà utilisé."); + } + // Vérifier si l'e-mail existe déjà + List allEmails = userService.listEmail(); + if (allEmails.contains(userProfile.getEmail())) { + result.rejectValue("email", "error.userProfile", "Cet e-mail est déjà utilisé."); + } + // Si des erreurs de validation sont détectées, retourner à la page de création de compte + if (result.hasErrors()) { + return "inscription"; + } + // Sinon, enregistrer l'utilisateur et rediriger vers la page de connexion userService.setUtilisateur(userProfile); return "redirect:/login"; } diff --git a/src/main/java/fr/eni/enchere/dal/UserRepository.java b/src/main/java/fr/eni/enchere/dal/UserRepository.java index cd03bae..f0a0cda 100644 --- a/src/main/java/fr/eni/enchere/dal/UserRepository.java +++ b/src/main/java/fr/eni/enchere/dal/UserRepository.java @@ -8,6 +8,8 @@ public interface UserRepository { List findAll(); UserProfil findById(int id); UserProfil findByUsername(String username); + List findAllUsernames(); + List findAllEmail(); void save(UserProfil utilisateur); void delete(int id); } diff --git a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java index 7f31415..7bfc63e 100644 --- a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java @@ -59,6 +59,19 @@ public class UserRepositoryImpl implements UserRepository { return user; } + @Override + public List findAllUsernames() { + String sql = "SELECT pseudo FROM UTILISATEURS WHERE isDelete = 0"; + List usernames = jdbcTemplate.queryForList(sql, String.class); + return usernames; + } + + @Override + public List findAllEmail() { + String sql = "SELECT email FROM UTILISATEURS WHERE isDelete = 0"; + List email = jdbcTemplate.queryForList(sql, String.class); + return email; + } @Override public List findAll() { diff --git a/src/main/resources/templates/inscription.html b/src/main/resources/templates/inscription.html index abe53e1..af30f07 100644 --- a/src/main/resources/templates/inscription.html +++ b/src/main/resources/templates/inscription.html @@ -107,7 +107,7 @@
- +
@@ -118,7 +118,7 @@
- +