Coder Social home page Coder Social logo

hh99lv3's Introduction

HH99LV3

요구사항 명세

  • 관리자 가입 기능

    • 이메일, 비밀번호, 부서, 권한을 저장할 수 있습니다.
      • 커리큘럼, 마케팅, 개발 부서가 있습니다.
      • MANAGER, STAFF 권한이 있습니다.
        • 커리큘럼, 개발 부서만 MANAGER 권한을 부여 받을 수 있습니다.
      • 이메일올바른 이메일 형식을 지켜야 합니다.
      • 비밀번호최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로 구성되어야 합니다. 발급한 토큰을 Header에 추가한 후 로그인 성공을 확인할 수 있는 값과 함께 반환합니다.
        • ex) HTTP Status Code, Error Message
  • 로그인 기능

    • 관리자는 이메일, 비밀번호를 입력하여 서버에 로그인을 요청할 수 있습니다.
    • 로그인 성공 시, 회원의 정보JWT를 활용하여 토큰을 발급하고, 발급한 토큰을 Header에 추가한 후 로그인 성공을 확인할 수 있는 값과 함께 반환합니다.
      • ex) HTTP Status Code, Error Message …
  • 강사 등록 기능

    • 이름, 경력(년차), 회사, 전화번호, 소개를 저장할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강사 등록이 가능합니다.
    • 등록된 강사의 정보를 반환 받아 확인할 수 있습니다.
  • 선택한 강사 정보 수정 기능

    • 선택한 강사의 경력, 회사, 전화번호, 소개를 수정할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • MANAGER 권한을 가진 관리자만 강사 정보 수정이 가능합니다.
    • 수정된 강사의 정보를 반환 받아 확인할 수 있습니다.
  • 강의 등록 기능

    • 강의명, 가격, 소개, 카테고리, 강사, 등록일을 저장할 수 있습니다.
      • Spring, React, Node 카테고리가 있습니다.
      • 강사 한 명이 여러 개의 강의를 촬영할 수도 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강의 등록이 가능합니다.
    • 등록된 강의의 정보를 반환 받아 확인할 수 있습니다.
  • 선택한 강의 정보 수정 기능

    • 선택한 강의의 강의명, 가격, 소개, 카테고리를 수정할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • MANAGER 권한을 가진 관리자만 강의 정보 수정이 가능합니다.
    • 수정된 강의의 정보를 반환 받아 확인할 수 있습니다.
  • 선택한 강사 조회 기능

    • 선택한 강사의 정보를 조회할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강사 조회가 가능합니다.
  • 선택한 강의 조회 기능

    • 선택한 강의의 정보를 조회할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강의 조회가 가능합니다.
  • 선택한 강사가 촬영한 강의 목록 조회 기능

    • 선택한 강사가 촬영한 강의를 조회할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강의 조회가 가능합니다.
    • 조회된 강의 목록은 등록일 기준 내림차순으로 정렬 되어있습니다.
  • 카테고리별 강의 목록 조회 기능

    • 선택한 카테고리에 포함된 강의를 조회할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • 관리자만 강의 조회가 가능합니다.
    • 조회된 강의 목록은 등록일 기준 내림차순으로 정렬 되어있습니다.
  • 공통 기능

    • 로그인 요청의 비밀번호 불일치 등 API 요청의 예외가 발생하는 모든 경우에 대해서 실패(예외상황)에 대해 판단할 수 있는 Status Code, Error 메시지등의 정보를 반환합니다.
🔥**추가 구현 기능**
  • 선택한 강의 삭제 기능
    • 선택한 강의를 삭제할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • MANAGER 권한을 가진 관리자만 강의 삭제가 가능합니다.
  • 선택한 강사 삭제 기능
    • 선택한 강사를 삭제할 수 있습니다.
      • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
      • MANAGER 권한을 가진 관리자만 강사 삭제가 가능합니다.
  • Spring Security를 적용하여 인증/인가를 구현합니다.
    • Security의 Secured 기능을 사용하여 권한별로 API를 제어할 수 있습니다.
  • swagger를 구글링해 보고 프로젝트에 적용해 보세요!
    • swagger란? Open Api Specification(OAS)를 위한 프레임워크 입니다.
      • API들이 가지고 있는 스펙(spec)을 명세, 관리할 수 있으며 백엔드와 프론트엔드가 협업할 때 사용할 수 있습니다!

유스케이스

image

ERD

image

API 명세

commit 규칙

  • commit message = feat(기능 추가), refactor(코드 리팩토링), docs(문서 추가), fix(버그 수정), chore(관리): issue 제목
  • commit message 내용 = body = issue의 기능
  • pr merge시 서로의 승인 필요

hh99lv3's People

Contributors

lsc713 avatar uha9218 avatar

Watchers

 avatar

hh99lv3's Issues

선택한 강사 조회 기능

  • 선택한 강사의 정보를 조회할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강사 조회가 가능합니다.

선택한 강사 정보 수정 기능

  • 선택한 강사의 경력, 회사, 전화번호, 소개를 수정할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • MANAGER 권한을 가진 관리자만 강사 정보 수정이 가능합니다.
  • 수정된 강사의 정보를 반환 받아 확인할 수 있습니다.

선택한 강의 조회 기능

  • 선택한 강의의 정보를 조회할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강의 조회가 가능합니다.

리뷰 남깁니다 ~

  1. Controller 부분에서 api 주소 마지막에 슬래시(/)는 빼는게 맞다고 합니다.
    참고 자료: https://blog.restcase.com/7-rules-for-rest-api-uri-design

수정 전

@PostMapping("/")

수정 후

@PostMapping

  1. LectureService 부분에서 checkAuthority 메서드 아래 처럼 줄일 수 있을거 같습니다.

수정 전

private boolean checkAuthority(String tokenValue) {
    boolean isManager = true;
    String token = jwtUtil.substringToken(tokenValue);
    //권한이 Manager인지 확인
    Claims info = jwtUtil.getUserInfoFromToken(token);
    String authority = (String) info.get(JwtUtil.AUTHORIZATION_KEY);
    if (!(AuthEnum.valueOf(authority)).equals(AuthEnum.MANAGER)) {
        return !isManager;
    }
    return isManager;
}

수정 후

private boolean checkAuthority(String tokenValue) {
    String token = jwtUtil.substringToken(tokenValue);
    //권한이 Manager인지 확인
    Claims info = jwtUtil.getUserInfoFromToken(token);
    String authority = (String) info.get(JwtUtil.AUTHORIZATION_KEY);
    return (AuthEnum.valueOf(authority)).equals(AuthEnum.MANAGER);
}

  1. LectureService, TutorService 에서도 checkAuthority 메서드가 중복적으로 사용되는데 util 형식으로 만드는 것도 좋아보입니다.

조심스럽게 리뷰 남겨봤습니다!
잘 작성하셔서 딱히 피드백 남길게 없네요 👍
혹시나 피드백에 대해서 궁금하신 점이 있으시다면 편하게 연락 주세요!
고생 많으셨습니다 ~~
다음 과제 잘 부탁드리겠습니다 😃

선택한 강의 정보 수정 기능

  • 선택한 강의의 강의명, 가격, 소개, 카테고리를 수정할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • MANAGER 권한을 가진 관리자만 강의 정보 수정이 가능합니다.
  • 수정된 강의의 정보를 반환 받아 확인할 수 있습니다.

강의 등록 기능

  • 강의명, 가격, 소개, 카테고리, 강사, 등록일을 저장할 수 있습니다.
    • Spring, React, Node 카테고리가 있습니다.
    • 강사 한 명이 여러 개의 강의를 촬영할 수도 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강의 등록이 가능합니다.
  • 등록된 강의의 정보를 반환 받아 확인할 수 있습니다.

관리자 가입 기능

  • 이메일, 비밀번호, 부서, 권한을 저장할 수 있습니다.
    • 커리큘럼, 마케팅, 개발 부서가 있습니다.
    • MANAGER, STAFF 권한이 있습니다.
      • 커리큘럼, 개발 부서만 MANAGER 권한을 부여 받을 수 있습니다.
    • 이메일올바른 이메일 형식을 지켜야 합니다.
    • 비밀번호최소 8자 이상, 15자 이하이며 알파벳 대소문자(a~z, A~Z), 숫자(0~9), 특수문자로 구성되어야 합니다.
  • 관리자가입 성공을 확인할 수 있는 값을 반환합니다.
    • ex) HTTP Status Code, Error Message …

예외 처리

  • 로그인 요청의 비밀번호 불일치 등 API 요청의 예외가 발생하는 모든 경우에 대해서 실패(예외상황)에 대해 판단할 수 있는 Status Code, Error 메시지등의 정보를 반환합니다.

선택한 강사 삭제 기능

  • 선택한 강사를 삭제할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • MANAGER 권한을 가진 관리자만 강사 삭제가 가능합니다.

강사 등록 기능

  • 이름, 경력(년차), 회사, 전화번호, 소개를 저장할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강사 등록이 가능합니다.
  • 등록된 강사의 정보를 반환 받아 확인할 수 있습니다.

선택한 강사가 촬영한 강의 목록 조회 기능

  • 선택한 강사가 촬영한 강의를 조회할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강의 조회가 가능합니다.
  • 조회된 강의 목록은 등록일 기준 내림차순으로 정렬 되어있습니다.

카테고리별 강의 목록 조회 기능

  • 선택한 카테고리에 포함된 강의를 조회할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • 관리자만 강의 조회가 가능합니다.
  • 조회된 강의 목록은 등록일 기준 내림차순으로 정렬 되어있습니다.

선택한 강의 삭제 기능

  • 선택한 강의를 삭제할 수 있습니다.
    • 로그인을 통해 발급받은 JWT가 함께 요청됩니다.
    • MANAGER 권한을 가진 관리자만 강의 삭제가 가능합니다.

로그인 기능

  • 관리자는 이메일, 비밀번호를 입력하여 서버에 로그인을 요청할 수 있습니다.
  • 로그인 성공 시, 회원의 정보JWT를 활용하여 토큰을 발급하고,
    발급한 토큰을 Header에 추가한 후 로그인 성공을 확인할 수 있는 값과 함께 반환합니다.
    • ex) HTTP Status Code, Error Message …

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.