diff --git a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java index 746744c..b0fcda9 100644 --- a/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java +++ b/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java @@ -8,6 +8,8 @@ import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Repository; import java.util.HashMap; @@ -20,11 +22,13 @@ public class UserRepositoryImpl implements UserRepository { private final JdbcTemplate jdbcTemplate; private NamedParameterJdbcTemplate namedParameterJdbcTemplate; + private PasswordEncoder passwordEncoder; @Autowired - public UserRepositoryImpl(JdbcTemplate jdbcTemplate, NamedParameterJdbcTemplate namedJdbcTemplate) { + public UserRepositoryImpl(JdbcTemplate jdbcTemplate, NamedParameterJdbcTemplate namedJdbcTemplate, PasswordEncoder passwordEncoder) { this.jdbcTemplate = jdbcTemplate; this.namedParameterJdbcTemplate = namedJdbcTemplate; + this.passwordEncoder = passwordEncoder; } @Override @@ -64,6 +68,7 @@ public class UserRepositoryImpl implements UserRepository { @Override public void save(UserProfil utilisateur) { if (utilisateur.getId() == 0) { + //Création utilisateur String sql = "INSERT INTO UTILISATEURS (pseudo, nom, prenom, email, telephone, rue, code_postal, ville, mot_de_passe, credit, administrateur) VALUES (:pseudo, :nom, :prenom, :email, :telephone, :rue, :code_postal, :ville, :mot_de_passe, 0, false)"; MapSqlParameterSource parameters = new MapSqlParameterSource(); parameters.addValue("pseudo", utilisateur.getPseudo()); @@ -74,8 +79,7 @@ public class UserRepositoryImpl implements UserRepository { parameters.addValue("rue", utilisateur.getRue()); parameters.addValue("code_postal", utilisateur.getCode_postal()); parameters.addValue("ville", utilisateur.getVille()); - parameters.addValue("mot_de_passe", utilisateur.getPassword()); - + parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getPassword())); KeyHolder keyHolder = new GeneratedKeyHolder(); namedParameterJdbcTemplate.update(sql, parameters, keyHolder, new String[] {"no_utilisateur"}); if (keyHolder.getKey() != null) { diff --git a/src/main/java/fr/eni/enchere/security/LoginService.java b/src/main/java/fr/eni/enchere/security/LoginService.java index a6abf03..dab7dde 100644 --- a/src/main/java/fr/eni/enchere/security/LoginService.java +++ b/src/main/java/fr/eni/enchere/security/LoginService.java @@ -2,11 +2,13 @@ package fr.eni.enchere.security; import fr.eni.enchere.bo.UserProfil; import fr.eni.enchere.dal.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.userdetails.User; import org.springframework.security.core.userdetails.User.UserBuilder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component @@ -14,6 +16,7 @@ public class LoginService implements UserDetailsService { private UserRepository userRep; + @Autowired public LoginService(UserRepository userRep) { this.userRep = userRep; } @@ -22,12 +25,10 @@ public class LoginService implements UserDetailsService { public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // Charger l'utilisateur depuis la base de données UserProfil utilisateur = userRep.findByUsername(username); - // Créer un nouvel objet UserBuilder UserBuilder userBuilder = User.builder() .username(utilisateur.getPseudo()) .password(utilisateur.getPassword()); - // Ajouter les rôles en fonction de isAdmin() if(utilisateur.isAdmin()) { userBuilder.roles("ADMIN", "MEMBRE"); diff --git a/src/main/java/fr/eni/enchere/security/SecurityConfig.java b/src/main/java/fr/eni/enchere/security/SecurityConfig.java new file mode 100644 index 0000000..8597d7c --- /dev/null +++ b/src/main/java/fr/eni/enchere/security/SecurityConfig.java @@ -0,0 +1,16 @@ +package fr.eni.enchere.security; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +@Configuration +public class SecurityConfig { + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + +}