68 lines
2.0 KiB
Java
68 lines
2.0 KiB
Java
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<UserDTO> findAllUsers() {
|
|
List<User> 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);
|
|
}
|
|
}
|
|
|