Files
ENI-enchere/src/main/java/fr/eni/enchere/dal/UserRepositoryImpl.java
jleroy 5c2b72ddf5 patch
2024-04-23 16:52:09 +02:00

128 lines
6.0 KiB
Java

package fr.eni.enchere.dal;
import fr.eni.enchere.bo.Article;
import fr.eni.enchere.bo.UserProfil;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Primary;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
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.password.PasswordEncoder;
import org.springframework.stereotype.Repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Repository
@Primary
public class UserRepositoryImpl implements UserRepository {
private final JdbcTemplate jdbcTemplate;
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
private PasswordEncoder passwordEncoder;
@Autowired
public UserRepositoryImpl(JdbcTemplate jdbcTemplate, NamedParameterJdbcTemplate namedJdbcTemplate, PasswordEncoder passwordEncoder) {
this.jdbcTemplate = jdbcTemplate;
this.namedParameterJdbcTemplate = namedJdbcTemplate;
this.passwordEncoder = passwordEncoder;
}
public class UserRowMapper implements RowMapper<UserProfil> {
@Override
public UserProfil mapRow(ResultSet rs, int rowNum) throws SQLException {
UserProfil userProfile = new UserProfil();
userProfile.setId(rs.getInt("no_utilisateur"));
userProfile.setPrenom(rs.getString("prenom"));
userProfile.setNom(rs.getString("nom"));
userProfile.setPseudo(rs.getString("pseudo"));
userProfile.setEmail(rs.getString("email"));
userProfile.setTelephone(rs.getString("telephone"));
userProfile.setRue(rs.getString("rue"));
userProfile.setCode_postal(rs.getString("code_postal"));
userProfile.setVille(rs.getString("ville"));
userProfile.setPassword(rs.getString("mot_de_passe"));
userProfile.setCredit(rs.getFloat("credit"));
userProfile.setAdmin(rs.getBoolean("administrateur"));
return userProfile;
}
}
@Override
public UserProfil findByUsername(String username) {
String sql = "SELECT * FROM UTILISATEURS WHERE pseudo = ? OR email = ? AND isDelete = 0";
UserProfil useruser = jdbcTemplate.queryForObject(sql, new UserRowMapper(), username, username);
return useruser;
}
@Override
public List<UserProfil> findAll() {
return List.of();
}
@Override
public UserProfil findById(int id) {
String sql = "SELECT * FROM UTILISATEURS WHERE no_utilisateur = ?";
UserProfil user = jdbcTemplate.queryForObject(sql, new UserRowMapper(), id);
return user;
}
@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, isDelete) VALUES (:pseudo, :nom, :prenom, :email, :telephone, :rue, :code_postal, :ville, :mot_de_passe, 0, false, false)";
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("pseudo", utilisateur.getPseudo());
parameters.addValue("nom", utilisateur.getNom());
parameters.addValue("prenom", utilisateur.getPrenom());
parameters.addValue("email", utilisateur.getEmail());
parameters.addValue("telephone", utilisateur.getTelephone());
parameters.addValue("rue", utilisateur.getRue());
parameters.addValue("code_postal", utilisateur.getCode_postal());
parameters.addValue("ville", utilisateur.getVille());
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) {
utilisateur.setId(keyHolder.getKey().intValue());
}
}else {
//Mettre à jour
String sql;
MapSqlParameterSource parameters = new MapSqlParameterSource();
if(utilisateur.getPassword().isEmpty()){
sql = "UPDATE UTILISATEURS SET pseudo = :pseudo, nom = :nom, prenom = :prenom, email = :email, telephone = :telephone, rue = :rue, code_postal = :code_postal, ville = :ville WHERE no_utilisateur = :id";
}else{
sql = "UPDATE UTILISATEURS SET pseudo = :pseudo, nom = :nom, prenom = :prenom, email = :email, telephone = :telephone, rue = :rue, code_postal = :code_postal, ville = :ville, mot_de_passe = :mot_de_passe WHERE no_utilisateur = :id";
parameters.addValue("mot_de_passe", passwordEncoder.encode(utilisateur.getPassword()));
}
parameters.addValue("pseudo", utilisateur.getPseudo());
parameters.addValue("nom", utilisateur.getNom());
parameters.addValue("prenom", utilisateur.getPrenom());
parameters.addValue("email", utilisateur.getEmail());
parameters.addValue("telephone", utilisateur.getTelephone());
parameters.addValue("rue", utilisateur.getRue());
parameters.addValue("code_postal", utilisateur.getCode_postal());
parameters.addValue("ville", utilisateur.getVille());
parameters.addValue("id", utilisateur.getId());
namedParameterJdbcTemplate.update(sql, parameters);
}
}
@Override
public void delete(int id) {
String sql = "UPDATE UTILISATEURS SET isDelete = 1 WHERE no_utilisateur = ?";
jdbcTemplate.update(sql, id);
}
}