package fr.eni.enchere.security;

import fr.eni.enchere.bo.UserProfil;
import fr.eni.enchere.dal.UserRepository;
import org.springframework.security.core.userdetails.User;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Component;

@Component
public class LoginService implements UserDetailsService {

    private UserRepository userRep;

    public LoginService(UserRepository userRep) {
        this.userRep = userRep;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        // Charger l'utilisateur depuis la base de données
        UserProfil utilisateur = this.userRep.findByUsername(username);
        UserDetails userDetails = null;
        // Créer un nouvel objet UserBuilder
        if (utilisateur != null) {
            userDetails = User.builder()
                    .username(utilisateur.getPseudo())
                    .password(utilisateur.getPassword())
                    .roles(utilisateur.isAdmin() ? "ADMIN" : "MEMBRE")
                    .build();
        } else {
            throw new UsernameNotFoundException("Les identifiants sont incorrect !");
        }
        return userDetails;
    }

}