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
public class LoginService implements UserDetailsService {

    private UserRepository userRep;

    @Autowired
    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 = 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");
        } else {
            userBuilder.roles("MEMBRE");
        }

        // Retourner l'utilisateur UserDetails construit
        return userBuilder.build();
    }

}
