package com.alterdekim.hearthhack.service; import com.alterdekim.hearthhack.dto.UserDTO; import com.alterdekim.hearthhack.entity.Role; import com.alterdekim.hearthhack.entity.User; import com.alterdekim.hearthhack.repository.RoleRepository; import com.alterdekim.hearthhack.repository.UserRepository; import lombok.RequiredArgsConstructor; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; @RequiredArgsConstructor @Service public class UserService implements IService { private final UserRepository userRepository; private final RoleRepository roleRepository; private final PasswordEncoder passwordEncoder; public void saveUser(UserDTO userDto) { User user = new User(); user.setUsername(userDto.getUsername()); user.setDisplayName(userDto.getUsername()); user.setPassword(passwordEncoder.encode(userDto.getPassword())); Role role = roleRepository.findByName("ROLE_USER"); if(role == null){ role = checkRoleExist(); } user.setRoles(Collections.singletonList(role)); userRepository.save(user); } public User findByUsername(String username) { return userRepository.findByUsername(username); } public List findAllUsers() { List users = userRepository.findAll(); return users.stream().map(this::convertEntityToDto) .collect(Collectors.toList()); } public User findById(Long id) { return userRepository.findById(id).orElse(null); } private UserDTO convertEntityToDto(User user){ UserDTO userDto = new UserDTO(); userDto.setUsername(user.getUsername()); return userDto; } private Role checkRoleExist() { Role role = new Role(); role.setName("ROLE_USER"); return roleRepository.save(role); } }