diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/UtilisateurService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/UtilisateurService.java new file mode 100644 index 0000000..878613d --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/UtilisateurService.java @@ -0,0 +1,51 @@ +package fr.iut.sciencequest.sae.services; + +import fr.iut.sciencequest.sae.dto.utilisateur.UtilisateurDTO; +import fr.iut.sciencequest.sae.dto.utilisateur.UtilisateurWithPasswordDTO; +import fr.iut.sciencequest.sae.entities.Utilisateur; +import fr.iut.sciencequest.sae.exceptions.IncorrectPasswordException; +import fr.iut.sciencequest.sae.exceptions.notFound.UtilisateurNotFoundException; +import fr.iut.sciencequest.sae.repositories.UtilisateurRepository; +import fr.iut.sciencequest.sae.services.interfaces.IUtilisateurService; +import org.modelmapper.ModelMapper; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.Objects; + +@Service +public class UtilisateurService implements IUtilisateurService { + + private UtilisateurRepository utilisateurRepository; + private BCryptPasswordEncoder passwordEncoder; + private ModelMapper modelMapper; + + + @Override + public UtilisateurDTO save(UtilisateurWithPasswordDTO user) { + Utilisateur utilisateur = this.modelMapper.map(user, Utilisateur.class); + utilisateur.setMotDePasse(passwordEncoder.encode(user.getMotDePasse())); + utilisateurRepository.save(utilisateur); + return this.modelMapper.map(utilisateur, UtilisateurDTO.class); + } + + @Override + public UtilisateurDTO login(UtilisateurWithPasswordDTO user) { + Utilisateur utilisateur = this.findUserByEmail(user.getEmail()); + if(!passwordEncoder.matches(user.getMotDePasse(), utilisateur.getMotDePasse())) { + throw new IncorrectPasswordException(); + } + + return this.modelMapper.map(utilisateur, UtilisateurDTO.class); + } + + @Override + public Utilisateur findUserByEmail(String email) { + Utilisateur user = this.utilisateurRepository.findUtilisateurByEmail(email); + if(Objects.equals(user.getPseudo(), "")) { + throw new UtilisateurNotFoundException(); + } + + return user; + } +} diff --git a/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IUtilisateurService.java b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IUtilisateurService.java new file mode 100644 index 0000000..73af590 --- /dev/null +++ b/SpringBootProject/src/main/java/fr/iut/sciencequest/sae/services/interfaces/IUtilisateurService.java @@ -0,0 +1,12 @@ +package fr.iut.sciencequest.sae.services.interfaces; + +import fr.iut.sciencequest.sae.dto.utilisateur.UtilisateurDTO; +import fr.iut.sciencequest.sae.dto.utilisateur.UtilisateurWithPasswordDTO; +import fr.iut.sciencequest.sae.entities.Utilisateur; + +public interface IUtilisateurService { + UtilisateurDTO save(UtilisateurWithPasswordDTO user); + UtilisateurDTO login(UtilisateurWithPasswordDTO user); + + Utilisateur findUserByEmail(String email); +}