hw0603 / spring-roomescape-member

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

1단계 - 예외 처리와 응답

예약

  • 지나간 날짜와 시간에 대한 예약 생성 시 예외가 발생한다.
  • 중복 예약 시 예외가 발생한다.
  • 예약 생성 시 예약자명이 비어있으면 예외가 발생한다.
  • 날짜가 유효하지 않은 값일 시 예외가 발생한다.
  • 등록되지 않은 시간에 대한 예약 생성 시 예외가 발생한다.
  • 요청 본문이 JSON 형식이 아닐 경우 예외가 발생한다.

시간

  • 중복된 시간 생성 시 예외가 발생한다.
  • 시간 삭제 시 참조된 예약이 있으면 예외가 발생한다.
  • 시간이 유효하지 않은 값일 시 예외가 발생한다.
  • 요청 본문이 JSON 형식이 아닐 경우 예외가 발생한다.

2단계 - 테마 추가

테마

  • 관리자는 테마를 추가할 수 있다.
    • 중복된 테마 이름으로 추가 시 예외가 발생한다.
    • 테마 추가 시, 테마 이름, 설명, 썸네일 중 하나라도 비어 있으면 예외가 발생한다.
  • 관리자는 테마를 조회할 수 있다.
  • 관리자는 테마를 삭제할 수 있다.
    • 테마 삭제 시 참조된 예약이 있으면 예외가 발생한다.

예약

  • 방탈출 예약 시 테마 정보를 포함하여 예약을 추가한다.
    • 등록되지 않은 테마에 대한 예약 생성 시 예외가 발생한다.
    • 동시간대에 이미 예약된 테마를 예약하는 경우 예외가 발생한다.

화면

  • /admin/theme 요청 시 templates/admin/theme.html가 응답한다.
  • /admin/reservation 요청 시 templates/admin/reservation-new.html가 응답한다.

3단계 - 사용자 기능

예약

  • /reservation 요청 시 templates/reservation.html가 응답한다.

테마

  • / 요청 시 templates/index.html가 응답한다.
  • 최근 일주일을 기준으로 예약이 많은 상위 10개 테마를 조회할 수 있다.

시간

  • 선택된 테마에 따라 예약 가능 여부가 포함된 시간을 조회한다.

4단계 - 사용자 로그인

사용자

  • 사용자는 이름, 이메일, 비밀번호로 구성된다.
  • 이메일은 로그인 시 사용되는 사용자의 식별자로, 중복될 수 없다.

로그인 및 인증 정보 조회

  • GET /login 요청 시 templates/login.html을 응답한다.
  • POST /login 요청 시 전달된 이메일과 비밀번호로 토큰을 발급하여 응답 쿠키를 설정한다.
  • GET /login/check 요청 시 전달된 쿠키를 이용해 로그인된 사용자의 이름을 응답한다.
  • POST /logout 요청 시 로그아웃한다.

5단계 - 로그인 리팩터링

로그인

  • 쿠키 내의 토큰을 활용해 사용자 객체를 생성하는 로직을 분리
    • HandlerMethodArgumentResolver 활용

사용자 예약

  • 예약 생성 시, 로그인한 사용자 정보를 활용하도록 변경

예약 관리

  • 관리자가 예약 생성 시, 유저를 조회하여 선택 후 예약을 생성하도록 변경

6단계 - 관리자 기능

  • 관리자 페이지는 ADMIN 권한이 부여된 계정으로 로그인해야 진입할 수 있다.
  • 관리자가 예약을 조회할 경우 검색 조건을 적용하여 필터링할 수 있다.
    • 예약자별 검색
    • 테마별 검색
    • 날짜(기간)별 검색

About

License:MIT License


Languages

Language:JavaScript 57.2%Language:HTML 39.4%Language:CSS 2.7%Language:Java 0.8%