- 시스템 요구사항
- 소프트웨어 설계(Use Case Diagram, API 명세서, ERD )
- 추가 기능 구현 현황
-
관리자 가입 기능
이메일
,비밀번호
,부서
,권한
을 저장할 수 있습니다.- 커리큘럼, 마케팅, 개발
부서
가 있습니다. - MANAGER, STAFF
권한
이 있습니다.- 커리큘럼, 개발
부서
만 MANAGER 권한을 부여 받을 수 있습니다.
- 커리큘럼, 개발
이메일
은올바른 이메일 형식
을 지켜야 합니다.비밀번호
는최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자
로 구성되어야 합니다.
- 커리큘럼, 마케팅, 개발
- 관리자가입 성공을 확인할 수 있는 값을 반환합니다.
- ex) HTTP Status Code, Error Message …
-
로그인 기능
- 관리자는
이메일
,비밀번호
를 입력하여 서버에 로그인을 요청할 수 있습니다. - 로그인 성공 시,
회원의 정보
와JWT
를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가한 후 로그인 성공을 확인할 수 있는 값과 함께 반환합니다.- ex) HTTP Status Code, Error Message …
- 관리자는
-
강사 등록 기능
이름
,경력(년차)
,회사
,전화번호
,소개
를 저장할 수 있습니다.- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강사 등록이 가능합니다.
- 등록된 강사의 정보를 반환 받아 확인할 수 있습니다.
-
선택한 강사 정보 수정 기능
- 선택한 강사의
경력
,회사
,전화번호
,소개
를 수정할 수 있습니다.- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- MANAGER 권한을 가진 관리자만 강사 정보 수정이 가능합니다.
- 수정된 강사의 정보를 반환 받아 확인할 수 있습니다.
- 선택한 강사의
-
강의 등록 기능
강의명
,가격
,소개
,카테고리
,강사
,등록일
을 저장할 수 있습니다.- Spring, React, Node
카테고리
가 있습니다. - 강사 한 명이 여러 개의 강의를 촬영할 수도 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강의 등록이 가능합니다.
- Spring, React, Node
- 등록된 강의의 정보를 반환 받아 확인할 수 있습니다.
-
선택한 강의 정보 수정 기능
- 선택한 강의의
강의명
,가격
,소개
,카테고리
를 수정할 수 있습니다.- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- MANAGER 권한을 가진 관리자만 강의 정보 수정이 가능합니다.
- 수정된 강의의 정보를 반환 받아 확인할 수 있습니다.
- 선택한 강의의
-
선택한 강사 조회 기능
- 선택한 강사의 정보를 조회할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강사 조회가 가능합니다.
- 선택한 강사의 정보를 조회할 수 있습니다.
-
선택한 강의 조회 기능
- 선택한 강의의 정보를 조회할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강의 조회가 가능합니다.
- 선택한 강의의 정보를 조회할 수 있습니다.
-
선택한 강사가 촬영한 강의 목록 조회 기능
- 선택한 강사가 촬영한 강의를 조회할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강의 조회가 가능합니다.
- 조회된 강의 목록은
등록일
기준 내림차순으로 정렬 되어있습니다.
- 선택한 강사가 촬영한 강의를 조회할 수 있습니다.
-
카테고리별 강의 목록 조회 기능 - 선택한 카테고리에 포함된 강의를 조회할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
- 관리자만 강의 조회가 가능합니다.
- 조회된 강의 목록은
등록일
기준 내림차순으로 정렬 되어있습니다.
-
공통 기능 - 로그인 요청의 비밀번호 불일치 등 API 요청의 예외가 발생하는 모든 경우에 대해서 실패(예외상황)에 대해 판단할 수 있는 Status Code, Error 메시지등의 정보를 반환합니다.
![](https://private-user-images.githubusercontent.com/105621255/310772260-833f2e88-27d6-47a9-b4e9-efc1a29c6514.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNDY2NjMsIm5iZiI6MTczOTE0NjM2MywicGF0aCI6Ii8xMDU2MjEyNTUvMzEwNzcyMjYwLTgzM2YyZTg4LTI3ZDYtNDdhOS1iNGU5LWVmYzFhMjljNjUxNC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMDEyNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0xMzU3ZTY5ZjJkYWVlNTQ1NmQwODNlZjkzMDE2NjczOTg2N2ZmNDViN2E2ZGE2ZTY3MDRjZGRiZGY0YjBlMjUxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.InXJXG-nBOndDzZVnENp0Kna8BZ_CsFZ2uRqGALRepQ)
![](https://private-user-images.githubusercontent.com/105621255/310758665-efddd6d2-ed9d-4117-8282-fbd1ecf0614c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNDY2NjMsIm5iZiI6MTczOTE0NjM2MywicGF0aCI6Ii8xMDU2MjEyNTUvMzEwNzU4NjY1LWVmZGRkNmQyLWVkOWQtNDExNy04MjgyLWZiZDFlY2YwNjE0Yy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMDEyNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZDEwMTUxMzc1N2QzOTdlMzMxZmYzOWQ2N2VhMjY0MjczNGFlNWQ3ZjcxMDU0MDM4YzI5ZDllOGRhZDY3N2MwJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.B94KYQ6QU4iHCXUKIqyxSfMNhi-mzuc0PDFhljUTNw8)
![](https://private-user-images.githubusercontent.com/105621255/310733145-0883dbfa-5652-41c9-aa3d-af58ff4f81e6.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNDY2NjMsIm5iZiI6MTczOTE0NjM2MywicGF0aCI6Ii8xMDU2MjEyNTUvMzEwNzMzMTQ1LTA4ODNkYmZhLTU2NTItNDFjOS1hYTNkLWFmNThmZjRmODFlNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjEwJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMFQwMDEyNDNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kMTIxMmQ2NzJiYzEyYjBiNjUwNTJlMTM5NDJhMzA1NDczMTI1N2I5ZTFlYWRmZWQ0M2E2NWJiZjY0OWE3ZDJjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.awo8qyDIOfRXCIzVGzGhGJsIjrTc5ISP5YDI_FnZcnI)
- ✅ 선택한 강의 삭제 기능
- 선택한 강의를 삭제할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청
- MANAGER 권한을 가진 관리자만 강의 삭제가 가능합니다.
- 선택한 강의를 삭제할 수 있습니다.
- ✅ 선택한 강사 삭제 기능
- 선택한 강사를 삭제할 수 있습니다.
- 로그인을 통해 발급받은 JWT가 함께 요청.
- MANAGER 권한을 가진 관리자만 강사 삭제가 가능합니다.
- 선택한 강사를 삭제할 수 있습니다.
- ✅ Spring Security를 적용하여 인증/인가를 구현
- Security의 Secured 기능을 사용하여 권한별로 API를 제어할 수 있습니다.
- ❌ swagger를 구글링해 보고 프로젝트에 적용