- 지나간 날짜와 시간에 대한 예약 생성 시 예외가 발생한다.
- 중복 예약 시 예외가 발생한다.
- 예약 생성 시 예약자명이 비어있으면 예외가 발생한다.
- 날짜가 유효하지 않은 값일 시 예외가 발생한다.
- 등록되지 않은 시간에 대한 예약 생성 시 예외가 발생한다.
- 요청 본문이 JSON 형식이 아닐 경우 예외가 발생한다.
- 중복된 시간 생성 시 예외가 발생한다.
- 시간 삭제 시 참조된 예약이 있으면 예외가 발생한다.
- 시간이 유효하지 않은 값일 시 예외가 발생한다.
- 요청 본문이 JSON 형식이 아닐 경우 예외가 발생한다.
- 관리자는 테마를 추가할 수 있다.
- 중복된 테마 이름으로 추가 시 예외가 발생한다.
- 테마 추가 시, 테마 이름, 설명, 썸네일 중 하나라도 비어 있으면 예외가 발생한다.
- 관리자는 테마를 조회할 수 있다.
- 관리자는 테마를 삭제할 수 있다.
- 테마 삭제 시 참조된 예약이 있으면 예외가 발생한다.
- 방탈출 예약 시 테마 정보를 포함하여 예약을 추가한다.
- 등록되지 않은 테마에 대한 예약 생성 시 예외가 발생한다.
- 동시간대에 이미 예약된 테마를 예약하는 경우 예외가 발생한다.
-
/admin/theme
요청 시templates/admin/theme.html
가 응답한다. -
/admin/reservation
요청 시templates/admin/reservation-new.html
가 응답한다.
-
/reservation
요청 시templates/reservation.html
가 응답한다.
-
/
요청 시templates/index.html
가 응답한다. - 최근 일주일을 기준으로 예약이 많은 상위 10개 테마를 조회할 수 있다.
- 선택된 테마에 따라 예약 가능 여부가 포함된 시간을 조회한다.
- 사용자는 이름, 이메일, 비밀번호로 구성된다.
- 이메일은 로그인 시 사용되는 사용자의 식별자로, 중복될 수 없다.
-
GET /login
요청 시templates/login.html
을 응답한다. -
POST /login
요청 시 전달된 이메일과 비밀번호로 토큰을 발급하여 응답 쿠키를 설정한다. -
GET /login/check
요청 시 전달된 쿠키를 이용해 로그인된 사용자의 이름을 응답한다. -
POST /logout
요청 시 로그아웃한다.
- 쿠키 내의 토큰을 활용해 사용자 객체를 생성하는 로직을 분리
HandlerMethodArgumentResolver
활용
- 예약 생성 시, 로그인한 사용자 정보를 활용하도록 변경
- 관리자가 예약 생성 시, 유저를 조회하여 선택 후 예약을 생성하도록 변경
- 관리자 페이지는
ADMIN
권한이 부여된 계정으로 로그인해야 진입할 수 있다. - 관리자가 예약을 조회할 경우 검색 조건을 적용하여 필터링할 수 있다.
- 예약자별 검색
- 테마별 검색
- 날짜(기간)별 검색