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 목록

API SPECS

  • 회원가입
  • 로그인
  • 탈퇴
  • 비밀번호 변경
  • 휴면상태 해제
  • 회원 신고
  • 회원 권한 제재

reference

Comments