AccountServiceImpl.java

package com.is.findyourplace.service.gestioneUtenza;

import com.is.findyourplace.persistence.dto.UtenteDto;
import com.is.findyourplace.persistence.entity.Utente;
import com.is.findyourplace.persistence.repository.UtenteRepository;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service;

@Service
public class AccountServiceImpl implements AccountService {
    /**
     * Repository Utente.
     */
    private final UtenteRepository utenteRepository;
    /**
     * Password Encoder.
     */
    private final PasswordEncoder passwordEncoder;

    /**
     * Costruttore del service.
     * @param utenteRepository UtenteRepository
     * @param passwordEncoder PasswordEncoder
     */
    public AccountServiceImpl(
            final UtenteRepository utenteRepository,
            final PasswordEncoder passwordEncoder) {
        this.utenteRepository = utenteRepository;
        this.passwordEncoder = passwordEncoder;
    }

    @Override
    public void saveUtente(final UtenteDto utenteDto) {
        Utente utente = new Utente();
        utente.setUsername(utenteDto.getUsername());
        utente.setEmail(utenteDto.getEmail());

        //Encrypt using springboot security
        utente.setPasswordHash(
                passwordEncoder.encode(utenteDto.getPassword())
        );

        if (utenteDto.getNumeroTel() != null) {
            utente.setNumeroTel(utenteDto.getNumeroTel());
        }
        utente.setDataNascita(utenteDto.getDataNascita());
        utente.setAdmin(false);
        utente.setNome(utenteDto.getNome());
        utente.setCognome(utenteDto.getCognome());

        utenteRepository.save(utente);
    }

    @Override
    public Utente findByUsernameOrEmail(final String username) {
        return utenteRepository.findByUsernameOrEmail(username, username);
    }

    @Override
    public UtenteDto findByUsername(final String username) {
        return mapToUtenteDto(utenteRepository.findByUsername(username));
    }

    @Override
    public boolean existsByUsername(final String username) {
        return utenteRepository.existsByUsername(username);
    }

    @Override
    public boolean existsByEmail(final String email) {
        return utenteRepository.existsByEmail(email);
    }


    private UtenteDto mapToUtenteDto(final Utente u) {
        UtenteDto utenteDto = new UtenteDto();
        utenteDto.setUsername(u.getUsername());
        utenteDto.setEmail(u.getEmail());
        utenteDto.setNome(u.getNome());
        utenteDto.setCognome(u.getCognome());
        utenteDto.setNumeroTel(u.getNumeroTel());
        utenteDto.setDataNascita(u.getDataNascita());

        return utenteDto;
    }
}