Skip to content

Latest commit

 

History

History
140 lines (115 loc) · 5.13 KB

File metadata and controls

140 lines (115 loc) · 5.13 KB

기능 명세서 - 사용자

1. 회원가입

1.1 일반 유저 회원가입

  • 설명: 일반 사용자가 회원가입을 요청할 수 있다.
  • 요청 데이터:
    • 이메일, 비밀번호, 닉네임, 전화번호
  • 처리 로직:
    1. 이메일, 비밀번호, 닉네임, 전화번호 유효성 검증
    2. 중복 이메일/전화번호 존재 시 가입 거부
    3. 비밀번호 암호화 저장
    4. 기본 권한 USER로 저장
    5. 회원가입 완료 시 사용자 정보를 응답
  • 예외 처리:
    • 유효하지 않은 입력값: MethodArgumentNotValidException
    • 이메일/전화번호 중복: BaseException 발생

1.2 사장(OWNER) 회원가입

  • 설명: 사업자(사장) 사용자가 회원가입을 요청할 수 있다.
  • 요청 데이터:
    • 이메일, 비밀번호, 닉네임, 전화번호
  • 처리 로직:
    1. 일반 유저와 동일하게 유효성 검증 및 중복 체크
    2. 기본 권한을 OWNER로 저장
    3. 회원가입 완료 시 사용자 정보를 응답
  • 예외 처리:
    • 유효하지 않은 입력값
    • 이메일/전화번호 중복

1.3 관리자(ADMIN) 회원가입

  • 설명: 관리자가 별도로 회원가입할 수 있다.
  • 요청 데이터:
    • 이메일, 비밀번호, 닉네임, 전화번호
  • 처리 로직:
    1. 일반 유저와 동일한 방식으로 검증 및 저장
    2. 기본 권한을 ADMIN으로 저장
    3. 회원가입 완료 시 사용자 정보를 응답
  • 예외 처리:
    • 유효하지 않은 입력값
    • 이메일/전화번호 중복

2. 로그인

2.1 사용자 로그인

  • 설명: 이메일/비밀번호를 사용해 로그인할 수 있다.
  • 요청 데이터:
    • 이메일, 비밀번호
  • 처리 로직:
    1. 이메일로 사용자 조회
    2. 비밀번호 일치 여부 검증
    3. 성공 시 JWT 토큰 발급
    4. 사용자 정보 + 토큰 응답
  • 예외 처리:
    • 존재하지 않는 이메일
    • 비밀번호 불일치
    • 로그인 실패 시 BaseException(AuthError.INVALID_LOGIN)

3. 유저 조회

3.1 현재 로그인한 유저 조회

  • 설명: 로그인한 사용자가 자신의 정보를 조회할 수 있다.
  • 요청 데이터:
    • 로그인한 사용자의 토큰 (AuthenticationPrincipal로 처리)
  • 처리 로직:
    1. 토큰에서 사용자 ID 추출
    2. 사용자 ID로 DB에서 유저 정보 조회
    3. 조회된 유저 정보를 응답
  • 예외 처리:
    • 유저를 찾을 수 없는 경우: BaseException(USER_NOT_FOUND)

4. 유저 정보 수정

4.1 현재 로그인한 유저 정보 수정

  • 설명: 로그인한 사용자가 닉네임 또는 전화번호를 수정할 수 있다.
  • 요청 데이터:
    • 닉네임(선택)
    • 전화번호(선택, 형식 검증)
  • 처리 로직:
    1. 요청받은 전화번호가 기존 사용자들의 전화번호와 중복되지 않는지 확인
    2. 중복일 경우 수정 거부
    3. 유저 엔티티의 닉네임/전화번호를 업데이트
    4. 수정된 유저 정보를 응답
  • 예외 처리:
    • 전화번호 중복: BaseException(DUPLICATE_PHONE_NUMBER)
    • 유저를 찾을 수 없는 경우: BaseException(USER_NOT_FOUND)

5. 비밀번호 검증

5.1 비밀번호 검증 및 쿠키 발급

  • 설명: 민감한 작업(회원 탈퇴 등)을 위해 사용자의 비밀번호를 재확인한다.
  • 요청 데이터:
    • 비밀번호
  • 처리 로직:
    1. 요청받은 비밀번호를 DB의 해시된 비밀번호와 비교
    2. 일치할 경우 5분짜리 pwdConfirm=true 쿠키를 발급
    3. 비밀번호가 일치하면 성공 메시지를 반환
  • 예외 처리:
    • 비밀번호가 일치하지 않는 경우: BaseException(INVALID_PASSWORD)

6. 회원 탈퇴

6.1 사용자 탈퇴 처리

  • 설명: 로그인한 사용자가 본인 계정을 탈퇴할 수 있다.
  • 요청 데이터:
    • 로그인한 사용자의 토큰
    • pwdConfirm 쿠키 (true 값) 필요
  • 처리 로직:
    1. 쿠키값 검증 (pwdConfirm == true 확인)
    2. 유저 엔티티의 isDeleted 필드를 true로 변경
    3. 탈퇴 완료 메시지를 반환
  • 예외 처리:
    • 쿠키가 없거나 값이 true가 아닌 경우: BaseException(AuthError.AUTH_PWD_CONFIRM_REQUIRED)
    • 유저를 찾을 수 없는 경우: BaseException(USER_NOT_FOUND)

7. 임시 비밀번호 발급

7.1 임시 비밀번호 발급 및 저장

  • 설명: 이메일, 전화번호를 기반으로 사용자가 임시 비밀번호를 발급받을 수 있다.
  • 요청 데이터:
    • 이메일
    • 전화번호
  • 처리 로직:
    1. 전화번호로 사용자 조회
    2. 조회된 사용자와 요청한 이메일이 일치하는지 검증
    3. 임시 비밀번호를 생성하여 암호화
    4. DB에 새로운 비밀번호 저장
    5. 발급된 임시 비밀번호(plain text)를 응답
  • 예외 처리:
    • 전화번호로 사용자를 찾을 수 없는 경우: BaseException(USER_NOT_FOUND)
    • 이메일이 일치하지 않는 경우: BaseException(LOGIN_FAILED)