@Transactional
public ResponseEntity<SecurityExceptionDto> signup(SignupRequestDto signupRequestDto) {
String username = signupRequestDto.getUsername();
String password = passwordEncoder.encode(signupRequestDto.getPassword());
// 회원 중복 확인
Optional<User> found = userRepository.findByUsername(username);
if (found.isPresent()) {
throw new CustomException(ErrorCode.NOT_FOUND_USER);
}
// 사용자 ROLE 확인
UserEnum role = UserEnum.USER;
if (signupRequestDto.isAdmin()) {
if (!signupRequestDto.getAdminToken().equals(ADMIN_TOKEN)) {
throw new IllegalArgumentException("관리자 암호가 틀려 등록이 불가능합니다.");
}
role = UserEnum.ADMIN;
}
User user = new User(signupRequestDto, role);
userRepository.save(user);
SecurityExceptionDto securityExceptionDto = new SecurityExceptionDto("회원가입 성공!", HttpStatus.OK.value());
return ResponseEntity.status(HttpStatus.OK).body(securityExceptionDto);
}
강의를 보며 UserService에서 비밀번호 암호화를 딱!!! 했는데 패스워드가 암호화가 되지 않고 그대로 DB에 저장이 되버렸다..
그래서 코드를 살펴보니
반환 값이 ResponeseEntity라 문제가 발생한 것 같았다
처음에는 서비스 단에서 반환값 변경없이 해결을 해보려 하다가
문득 entity에서 가능하지 않을까?? 롸??
public void hashPassword(PasswordEncoder passwordEncoder){
this.password = passwordEncoder.encode(password);
}
바로 repositor.save하기 전에 서비스 단에서 불리게끔
User user = new User(signupRequestDto, role);
user.hashPassword(passwordEncoder);
userRepository.save(user);
수정을 했더니 DB에 암호화된 password가 딱!!!!!!!!!
이렇게 나는 또 성장을 하고 있는걸까..