김민주

[TIL] 241114 본문

STUDY/TIL

[TIL] 241114

7alswn 2024. 11. 14. 21:34

Do - List

  • 코드카타
  • 회원 정보 수정 기능 - @ToBuilder 오류 해결
  • 회원가입 유효성 검사 추가
  • 회원 정보 수정 및 회원 탈퇴 시 출력 문구 통일
  • 팀원 코드리뷰 + Merge (Conflicts 해결)

@Builder, @ToBuilder

UserService - 회원 정보 수정 부분

User에 @Setter가 아닌 @Builder를 사용하여 구현하는 도중, toBuilder가 인식이 안 되는 오류가 발생했습니다.

User 어노테이션 부분

@Builder 어노테이션에는 다음과 같이 'toBuilder' 속성을 지정할 수 있습니다. (default = false 이므로 오류가 발생한 것)

해당 속성을 지정하게 되면 아래와 같이 toBuilder() 메서드를 사용할 수 있으며, 해당 메서드는 기존 객체 인스턴스의 값으로 초기화되는 필더를 가져옵니다.

따라서 toBuilder() 메서드는 기존의 인스턴스를 기반으로 builder를 사용하여 일부 값을 변경할 때 활용할 수 있습니다.

* 참고 자료: https://wildeveloperetrain.tistory.com/298

* 관련 이슈: https://github.com/projectlombok/lombok/issues/1244


회원가입 유효성 검사

필수 기능 - 사용자 인증 기능

프로젝트 필수 구현 기능 중 사진의 체크 표시된 부분을 구현하기 위해 유효성 검사를 추가합니다.

  • 기존 코드
public void signup(SignupRequestDto signupRequestDto) {
    String username = signupRequestDto.getUsername();
    String password = passwordEncoder.encode(signupRequestDto.getPassword());
	...
  • 수정된 코드
public void signup(SignupRequestDto signupRequestDto) {
    String username = signupRequestDto.getUsername();
    String password = signupRequestDto.getPassword();
    
    // username 유효성 검사: 4~10자, 소문자 알파벳과 숫자로만 구성
    if (!username.matches("^[a-z0-9]{4,10}$")) {
        throw new IllegalArgumentException("아이디는 4자 이상 10자 이하이며, 알파벳 소문자와 숫자로만 구성되어야 합니다.");
    }

    // password 유효성 검사: 8~15자, 알파벳 대소문자, 숫자, 특수문자 포함
    if (!password.matches("^(?=.*[a-zA-Z])(?=.*\\d)(?=.*[!@#$%^&*()])[A-Za-z\\d!@#$%^&*()]{8,15}$")) {
        throw new IllegalArgumentException("비밀번호는 8자 이상 15자 이하이며, 알파벳 대소문자, 숫자, 특수문자를 포함해야 합니다.");
    }
    password = passwordEncoder.encode(password);
    ...

기존에는 password를 받고 바로 암호화를 했는데, 유효성 검사를 해야하므로 암호화 하는 부분을 검사 이후로 뺐습니다.

 

'STUDY > TIL' 카테고리의 다른 글

[TIL] 241118 - EC2에서 Docker Compose하기  (3) 2024.11.18
[TIL] 241115 - Mockito 기반 테스트 코드 작성  (1) 2024.11.15
[TIL] 241113  (0) 2024.11.14
[TIL] 241112 - AI API 키 발급 및 테스트  (2) 2024.11.12
[TIL] 241111  (0) 2024.11.11