CustomUserDetailsService.java

package com.is.findyourplace.service.gestioneUtenza;

import com.is.findyourplace.controller.gestioneUtenza.CustomUserDetails;
import com.is.findyourplace.persistence.entity.Utente;
import com.is.findyourplace.persistence.repository.UtenteRepository;
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.Service;

@Service
public class CustomUserDetailsService implements UserDetailsService {
    /**
     * Repository Utente.
     */
    private final UtenteRepository utenteRepository;

    /**
     * Costruttore del service.
     * @param utenteRepository UtenteRepository
     */
    public CustomUserDetailsService(
            final UtenteRepository utenteRepository) {
        this.utenteRepository = utenteRepository;
    }

    @Override
    public UserDetails loadUserByUsername(final String username)
            throws UsernameNotFoundException {
        Utente utente =
                utenteRepository.findByUsernameOrEmail(username, username);

        if (utente != null) {
            return CustomUserDetails.fromUtente(utente);
        } else {
            throw new UsernameNotFoundException(
                    "Invalid username or password.");
        }
    }
}