회원 도메인 설계
tranche - 회원 관련 컴포넌트 설계
추상화
Member 클래스
모든 회원은 Member
라는 클래스를 상속받아 생성된다.
Member
는 Sprint Security를 사용하기 위해 UserDetails
를 구현한다.
멤버 변수
Long memberId
- PK값String email
- 로그인에 필요한 아이디String signinPassword
- 로그인에 필요한 비밀번호(암호화 되어 저장된다)String nickname
- 사용자가 설정한 닉네임List<String> roles
- 권한ADMIN
NORMAL
VENDOR
중 하나와WRITE
READ
중 하나 이상으로 구성된다.
LocalDate lastPasswordUpdateDate
- 비밀번호를 갱신한 마지막 날짜LocalDate lastSigininDate
- 마지막으로 로그인한 날짜- 마지막으로 로그인한 날짜로부터 2년이 지나면 휴면(비활성화)상태로 전환된다.
LocalDate accountCreationDate
- 계정이 생성된 날짜boolean isEnabled
- 탈퇴한 회원은false
아니면true
메서드
@override getAuthorities()
- 계정이 가지고 있는 권한 목록 반환@override getUsername()
- 계정의 아이디(이메일) 반환@override getPassword()
- 계정의 비밀번호 반환@override isAccountNonExpired()
- 휴면 계정이라면false
, 아직 만료되지 않았다면true
반환@override isAccountNonLocked()
- 계정이 잠겨있다면false
, 잠겨있지 않다면true
반환 (항상true
를 반환하도록 구현)@override isCredentialNonExpired()
- 비밀번호가 만료되었다면false
, 만료되지 않았다면true
반환@override isEnabled()
- 계정이 활성화되어 있다면true
, 비활성화 상태라면false
반환
기능
auth
spring security를 사용하여 인증/인가 기능을 구현한다.
로그인 과정은 다음과 같다.
회원은 일반(NORMAL), 판매자(VENDOR), 관리자(ADMIN)로 구분되며 READ
WRITE
권한을 가질 수 있다.
READ
- 조회를 할 수 있는 권한WRITE
- 후기 등의 글을 쓸 수 있는 권한. 부적절한 행위로 인해 신고를 당할 경우 관리자에 의해 일정 기간동안 제한될 수 있다.
management
회원을 관리하는 기능을 제공한다.
모든 계정은 다음과 같은 상태를 가진다.
- 비밀번호 갱신 필요 - 마지막 비밀번호 변경일로부터 6개월이 지난 경우
- 휴면 - 마지막 로그인 날짜로부터 2년이 지난 경우
- 탈퇴 - 탈퇴한 경우
API 목록
- 회원가입
- 로그인
- 탈퇴
- 비밀번호 변경
- 휴면상태 해제
- 회원 신고
- 회원 권한 제재
Comments