스프링 공부/게시판 프로젝트 만들기

[스프링] 12. Member 엔티티에 대해 생각해보기

장아장 2023. 1. 11. 13:09

기본적인 설정들은 어느정도 만들어두었다.

모든 로직들을 만들고, 이에 대한 테스트 및 정리들을 해볼까 한다. 

 

일단 회원부터 가지고 있어야 할 인스턴스들과, 로직들을 생각해봐야 한다. 


회원 엔티티

인스턴스들

  • 아이디(username)
  • 닉네임(nickname)
  • 이메일
  • 비밀번호
  • 역할
  • 가입일자(BaseTimeEntity에 추가된다)
  • 최근 수정일자(BaseTimeEntity에 추가된다. 수정일자가 1달이 넘으면 비밀번호 변경 요청을 보낸다)

 


기능

  • 회원가입
  • 로그인
  • 닉네임 수정
  • 비밀번호 수정
  • 이메일 수정
  • 비밀번호 변경 요청여부 확인

 

이러한 기능들을, 데이터베이스를 사용하지 않고 Member라는 도메인에서 사용할 수 있는 로직들로 어떤 부분들이 필요할지 생각해보아야 한다. 


최소단위의 기능

  • 회원정보를 가져오면 Member를 반환한다. 
    • 비밀번호를 두 번 쓸 때 두 개가 일치하지 않으면 예외처리한다. 
  • (repository에서 findByUsername으로 해당 username을 가지는 멤버를 찾아온 상태에서) 비밀번호가 맞으면 참을 반환한다. 
  • (repository에서 동일한 닉네임의 멤버를 찾지 못하면) 사용자의 닉네임을 입력변수로 초기화한다. 
  • (repository에서 동일한 이메일의 멤버를 찾지 못하면) 사용자의 이메일을 입력변수로 초기화한다. 
    • 이메일 형식이 맞지 않으면 예외처리한다. 
  • 비밀번호 변경 요청이 들어오면 두 비밀번호를 비교해 비밀번호 인스턴스를 초기화시켜준다. 이 때 비밀번호 초기화 주기를 현재 시간으로 초기화시켜준다. 
    • 암호화 시켜 초기화시켜준다. 
    • 두 비밀번호가 일치하지 않으면 예외처리한다. 
    • 기존 비밀번호와 일치하면 예외처리한다. 
  • 비밀번호를 변경한지 3개월이 지나면 참을 반환한다. 

이 정도를 생각하고, 멤버 엔티티를 만든 후, 이에 대한 테스트로직을 만들고 테스트를 통과하는 도메인 로직을 만들어야 겠다.