❗공통 조건
- 클라이언트는 Postman이고 프론트엔드는 별도 구현하지 않습니다.
- 사용자 인증 기능 공통 조건
- username, password를 클라이언트에서 전달 받습니다.
- Spring Security와 JWT를 사용하여 설계 및 구현합니다.
- 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 토큰을 가진 작성자 본인만 처리할 수 있습니다.
- 예) 본인이 작성한 댓글 외엔 수정 및 삭제 불가
- 예시) 배달앱
- 리뷰 작성, 조회, 수정, 삭제 기능
- 주문자만 본인이 주문한 항목에 대한 리뷰를 생성할 수 있습니다.
- 주문자만 해당 리뷰를 수정하고 삭제할 수 있습니다.