litlight 2024. 6. 19. 16:24

공통 조건

  • 클라이언트는 Postman이고 프론트엔드는 별도 구현하지 않습니다.
  • 사용자 인증 기능 공통 조건
    • username, password를 클라이언트에서 전달 받습니다.
    • Spring SecurityJWT를 사용하여 설계 및 구현합니다.
    • JWT는 Access Token, Refresh Token을 구현합니다.
    • Access Token 만료 시 : 유효한 Refresh Token을 통해 새로운 Access Token과 Refresh Token을 발급
    • Refresh Token 만료 시 : 재로그인을 통해 새로운 Access Token과 Refresh Token을 발급
    • API를 요청할 때는 Access Token을 사용합니다.
    • Access Token, Refresh Token은 동시에 전달을 하는게 아니고 용도에 맞게 사용되어야 합니다.

✅ 사용자 인증 기능

  • 조건
    • username: 최소 4자 이상, 10자 이하이며 알파벳 소문자(a~z), 숫자(0~9)
    • password: 최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자
  • 회원가입 기능
    • 성공
      • DB에 중복된 username이 없다면 회원을 저장한다.
      • 클라이언트에 성공 메시지와 상태코드를 반환한다.
      • 응답은 content-type application/json 형식입니다.
      • 회원 권한 부여
        • ADMIN
          • 모든 게시글, 댓글 수정과 삭제 가능
        • USER
          • 본인이 작성한 게시글, 댓글에 한하여 수정과 삭제 가능
    • ⚠️ 필수 예외처리
      • DB에 중복된 username이 이미 존재하는 경우
      • username,password 조건에 맞지 않는 경우
  • 로그인 기능
    • 성공
      • DB에서 username을 사용하여 회원가입 된 사용자인지 확인한다.
      • 회원가입 된 사용자라면 password를 비교하여 로그인한다.
      • header에 토큰을 추가하고 성공 상태코드와 메세지를 반환합니다.
    • ⚠️ 필수 예외처리
      • 유효하지 않은 사용자 정보로 로그인을 시도한 경우
      • ex. 회원가입을 하지 않거나 회원 탈퇴한 경우
      • username과 password가 일치하지 않는 사용자 정보로 로그인을 시도한 경우
    • 사용자는 자신의 계정으로 서비스에 로그인할 수 있습니다.
    • 로그아웃 기능
      • 조건
        • 로그아웃 시, 발행한 토큰은 초기화 합니다.
        • 로그아웃 후 초기화 된 Refresh Token은 재사용할 수 없고 재로그인해야 합니다.
    • 사용자는 로그인 되어 있는 본인의 계정을 로그아웃 할 수 있습니다.

프로필 관리

  • 비밀번호 수정 조건
    • 비밀번호 수정 시, 본인 확인을 위해 현재 비밀번호를 입력하여 올바른 경우에만 수정할 수 있습니다.
    • 현재 비밀번호와 동일한 비밀번호로는 변경할 수 없습니다.
  • 프로필 수정 기능
    • 이름, 한 줄 소개와 같은 기본적인 정보를 볼 수 있어야 하며 수정할 수 있어야 합니다.
    • 최근 3번안에 사용한 비밀번호는 사용할 수 없도록 제한합니다.

게시물 CRUD 기능 (배달앱일 경우 : 주문 CRUD 기능)

  • 조건
    • 게시물 작성, 수정, 삭제는 **인가(Authorization)**가 필요합니다.
    • 유효한 JWT 토큰을 가진 작성자 본인만 처리할 수 있습니다.
    • 조회
      • 모든 사용자가 전체 게시물 데이터를 조회할 수 있습니다.
      • 기본 정렬은 생성일자 기준으로 최신순으로 정렬합니다.
      • 페이지네이션
        • 페이지네이션하여 각 페이지 당 게시물 데이터가 5개씩 나오게 합니다.
  • ⚠️ 필수 예외처리
    • 작성자가 아닌 다른 사용자가 게시물 작성, 수정, 삭제를 시도하는 경우
  • 예시) 배달앱
    • 주문 작성, 조회, 수정, 삭제 기능
    • 주문 → 게시글 (주문은 곧 게시글과 같습니다.)
    • 주문목록 → 게시판 (주문목록은 곧 게시판과 같습니다.)
    • 주문한 사람만 메뉴를 수정하고 삭제할 수 있습니다.

댓글 CRUD 기능 (배달앱일 경우 : 리뷰 CRUD 기능)

  • 조건
    • 사용자는 게시물에 댓글을 작성할 수 있고, 본인의 댓글은 수정 및 삭제를 할 수 있습니다.
    • 내용만 수정이 가능합니다.
    • 댓글 작성, 수정, 삭제는 **인가(Authorization)**가 필요합니다.
    • 유효한 JWT 토큰을 가진 작성자 본인만 처리할 수 있습니다.
      • 예) 본인이 작성한 댓글 외엔 수정 및 삭제 불가
  • 예시) 배달앱
    • 리뷰 작성, 조회, 수정, 삭제 기능
    • 주문자만 본인이 주문한 항목에 대한 리뷰를 생성할 수 있습니다.
    • 주문자만 해당 리뷰를 수정하고 삭제할 수 있습니다.