Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Note 수정 API #176

Open
TaeHyoungKwon opened this issue Nov 24, 2021 · 0 comments
Open

Note 수정 API #176

TaeHyoungKwon opened this issue Nov 24, 2021 · 0 comments

Comments

@TaeHyoungKwon
Copy link
Contributor

TaeHyoungKwon commented Nov 24, 2021

Note Update API 개발 전 처리해야할 선행 이슈

  • Issue에 변경할 Note, Topic 타이틀을 저장할 수 있는 필드가 있어야한다. Notes 수정 API - Issue에 추가 필드 생성 #178
    • Issue 다이얼로그에 원래 title, 수정할 title, 수정 이유가 있어야해서
  • django admin에서 권한을 수동으로 설정할 수 있어야한다. Note 수정 API - admin 커스텀 #177
    • Issue에 대한 승인권한은 상위 컨텐츠 owner가 가지고 있음(Page→Topic, Topic→Note, Note→admin)
    • Note 수정권한은 admin이 가지고 있으므로 user에 is_admin필드를 주어서 권한이 있는지 확인할 수 있어야한다.
  • Issue Approve API 수정
    • action이 update일 경우와 create일 경우로 분기처리한다.

문제

  • Note title을 수정할 수 있어야한다.

해결

  • Note Update API를 통해 Note title을 수정하는 Issue를 생성한다.
  • 해당 Issue에 대한 권한이 있는 superuser(admin)가 Issue를 승인하여 Note title을 수정한다.

조건

  • Note title을 수정 요청은 어느 유저나 할 수 있다.
    • Note title을 수정 요청하는 Issue를 생성
  • 해당 Issue를 승인할 수 있는 권한은 superuser(admin)만 가지고 있다.

절차

  1. 클라이언트에서 Note 수정 API를 호출한다. (변경할 note title: new title, 수정 요청사유: some reason)
  2. 백엔드에서 request body를 검증한다.
    • 검증 내용
      • 변경할 title이 valid한가(empty string인지, 원래 title과 다른지 등)
      • 변경할 reason이 valid한가(empty string 등)
    • 검증을 통과하면
      • Note update에 대한 Issue를 생성한다. 이때 전달받은 new title과 some reason을 Issue에 저장한다.
    • 검증을 통과못하면
      • 400을 리턴한다.
  3. 이슈 승인 API를 통해 바꿀 title을 Note에 반영한다.

인수테스트

  1. 페이지 디테일 뷰에서 노트 우클릭 후 이름 수정 클릭
  2. 기존의 노트 title 표시, 변경할 노트 title, 수정 요청 사유 작성 후 OK 클릭
  3. 노트 title update에 대한 이슈 생성
  4. 해당 이슈 클릭 후 승인 클릭
    • 승인 클릭 한 유저가 superuser(admin)일 경우 수정할 노트 title 반영
    • superuser가 아닐 경우 "권한이 없습니다"

API Docs

Auth : Bearer JWT

Req

POST {BASE_URL}/notes/{note_id}/

request body
{
	"new_title": "note new title",
	"reason": "some reason"
}

Res

200 OK

{
	"message": "Note 수정 이슈를 생성하였습니다."
}

400 FORBIDDEN

{
	"message": "요청이 올바르지 않습니다."
}

404 NOT_FOUND

{
	"message": "Note를 찾을 수 없습니다."
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant