47 lines
1.7 KiB
Java
47 lines
1.7 KiB
Java
package site.easystartup.web.service;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
import org.springframework.stereotype.Service;
|
|
import site.easystartup.web.domain.exception.UserExistException;
|
|
import site.easystartup.web.domain.model.Role;
|
|
import site.easystartup.web.domain.model.User;
|
|
import site.easystartup.web.domain.request.SignupRequest;
|
|
import site.easystartup.web.domain.request.UpdatePassportRequest;
|
|
import site.easystartup.web.repo.UserRepo;
|
|
|
|
import java.security.Principal;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class AuthService {
|
|
private final UserRepo userRepo;
|
|
private final UserService userService;
|
|
private final PasswordEncoder passwordEncoder;
|
|
|
|
public User createUser(SignupRequest signupRequest) {
|
|
if (userRepo.findUserByUsername(signupRequest.getUsername()).isPresent()) {
|
|
throw new UserExistException("An account with this username already exists.");
|
|
}
|
|
|
|
User user = new User();
|
|
user.setEmail(signupRequest.getEmail());
|
|
user.setUsername(signupRequest.getUsername());
|
|
user.setPassword(passwordEncoder.encode(signupRequest.getPassword()));
|
|
Set<Role> roles = new HashSet<>();
|
|
signupRequest.getRoles().forEach(role -> roles.add(Role.valueOf(role)));
|
|
user.setRoles(roles);
|
|
|
|
return userRepo.save(user);
|
|
}
|
|
|
|
public User updatePassword(UpdatePassportRequest passportRequest, Principal principal) {
|
|
User user = userService.getUserByPrincipal(principal);
|
|
user.setPassword(passwordEncoder.encode(passportRequest.getPassword()));
|
|
|
|
return userRepo.save(user);
|
|
}
|
|
}
|