기본적인 설정들은 어느정도 만들어두었다.
모든 로직들을 만들고, 이에 대한 테스트 및 정리들을 해볼까 한다.
일단 회원부터 가지고 있어야 할 인스턴스들과, 로직들을 생각해봐야 한다.
회원 엔티티
인스턴스들
- 아이디(username)
- 닉네임(nickname)
- 이메일
- 비밀번호
- 역할
- 가입일자(BaseTimeEntity에 추가된다)
- 최근 수정일자(BaseTimeEntity에 추가된다. 수정일자가 1달이 넘으면 비밀번호 변경 요청을 보낸다)
기능
- 회원가입
- 로그인
- 닉네임 수정
- 비밀번호 수정
- 이메일 수정
- 비밀번호 변경 요청여부 확인
이러한 기능들을, 데이터베이스를 사용하지 않고 Member라는 도메인에서 사용할 수 있는 로직들로 어떤 부분들이 필요할지 생각해보아야 한다.
최소단위의 기능
- 회원정보를 가져오면 Member를 반환한다.
- 비밀번호를 두 번 쓸 때 두 개가 일치하지 않으면 예외처리한다.
- (repository에서 findByUsername으로 해당 username을 가지는 멤버를 찾아온 상태에서) 비밀번호가 맞으면 참을 반환한다.
- (repository에서 동일한 닉네임의 멤버를 찾지 못하면) 사용자의 닉네임을 입력변수로 초기화한다.
- (repository에서 동일한 이메일의 멤버를 찾지 못하면) 사용자의 이메일을 입력변수로 초기화한다.
- 이메일 형식이 맞지 않으면 예외처리한다.
- 비밀번호 변경 요청이 들어오면 두 비밀번호를 비교해 비밀번호 인스턴스를 초기화시켜준다. 이 때 비밀번호 초기화 주기를 현재 시간으로 초기화시켜준다.
- 암호화 시켜 초기화시켜준다.
- 두 비밀번호가 일치하지 않으면 예외처리한다.
- 기존 비밀번호와 일치하면 예외처리한다.
- 비밀번호를 변경한지 3개월이 지나면 참을 반환한다.
이 정도를 생각하고, 멤버 엔티티를 만든 후, 이에 대한 테스트로직을 만들고 테스트를 통과하는 도메인 로직을 만들어야 겠다.
'스프링 공부 > 게시판 프로젝트 만들기' 카테고리의 다른 글
[스프링] 14. Member에 대한 테스트 만들기 (0) | 2023.01.11 |
---|---|
[스프링] 13. Member 엔티티 만들기 (0) | 2023.01.11 |
[스프링] 11. BaseEntity를 만들어보자. (0) | 2023.01.09 |
[스프링] 10. JWT를 구현하기. 찐막: 필터만들기와 SecurityConfiguration에 JWT 추가하기 (0) | 2023.01.09 |
[스프링] 9. JWT를 구현하기. 2단계: 인증의 예외를 가져와보자. (0) | 2023.01.09 |