diff --git a/api/api-event/src/main/java/com/pgms/apievent/eventreview/service/EventReviewService.java b/api/api-event/src/main/java/com/pgms/apievent/eventreview/service/EventReviewService.java index ec1265f6..26102e69 100644 --- a/api/api-event/src/main/java/com/pgms/apievent/eventreview/service/EventReviewService.java +++ b/api/api-event/src/main/java/com/pgms/apievent/eventreview/service/EventReviewService.java @@ -42,9 +42,9 @@ public EventReviewResponse createEventReview(Long memberId, Long eventId, EventR } public EventReviewResponse updateEventReview(Long memberId, Long reviewId, EventReviewUpdateRequest request) { - // TODO : 작성자와 현재 로그인한 사람이 일치하는지 검증 로직 필요 Member member = getMember(memberId); EventReview eventReview = getEventReview(reviewId); + validateReviewer(eventReview, member); eventReview.updateEventReview(request.content()); return EventReviewResponse.of(eventReview); } @@ -64,9 +64,9 @@ public List getEventReviewsForEventByEventId(Long eventId) } public void deleteEventReviewById(Long memberId, Long reviewId) { - // TODO : 작성자와 현재 로그인한 사람이 일치하는지 검증 로직 필요 Member member = getMember(memberId); EventReview eventReview = getEventReview(reviewId); + validateReviewer(eventReview, member); eventReviewRepository.delete(eventReview); } @@ -79,4 +79,10 @@ private Member getMember(Long memberId) { return memberRepository.findById(memberId) .get(); } + + private void validateReviewer(EventReview eventReview, Member member) { + if (!eventReview.isSameReviewer(member)) { + throw new EventException(REVIEWER_MISMATCH_EXCEPTION); + } + } } diff --git a/api/api-event/src/main/java/com/pgms/apievent/exception/EventErrorCode.java b/api/api-event/src/main/java/com/pgms/apievent/exception/EventErrorCode.java index 80c30e15..005b154d 100644 --- a/api/api-event/src/main/java/com/pgms/apievent/exception/EventErrorCode.java +++ b/api/api-event/src/main/java/com/pgms/apievent/exception/EventErrorCode.java @@ -17,6 +17,7 @@ public enum EventErrorCode implements BaseErrorCode { EVENT_TIME_NOT_FOUND("EVENT TIME NOT FOUND", HttpStatus.NOT_FOUND, "존재하지 않는 회차입니다."), ALREADY_EXIST_EVENT_TIME("EVENT TIME ALREADY EXISTS", HttpStatus.CONFLICT, "공연에 대한 회차가 이미 존재합니다."), VALIDATION_FAILED("VALIDATION FAILED", HttpStatus.BAD_REQUEST, "입력값에 대한 검증에 실패했습니다."), + REVIEWER_MISMATCH_EXCEPTION("REVIEWER MISMATCH", HttpStatus.BAD_REQUEST, "리뷰 작성자가 일치하지 않습니다."), EVENT_REVIEW_NOT_FOUND("EVENT REVIEW NOT FOUND", HttpStatus.NOT_FOUND, "존재하지 않는 공연 리뷰입니다."), UNSUPPORTED_FILE_EXTENSION("UNSUPPORTED FILE EXTENSION", HttpStatus.BAD_REQUEST, "지원되지 않는 파일 확장자입니다."), S3_UPLOAD_FAILED_EXCEPTION("S3 UPLOAD FAILED", HttpStatus.INTERNAL_SERVER_ERROR, "S3에 파일 업로드를 실패했습니다."); diff --git a/core/core-domain/src/main/java/com/pgms/coredomain/domain/event/EventReview.java b/core/core-domain/src/main/java/com/pgms/coredomain/domain/event/EventReview.java index 3020c93f..1654f3e8 100644 --- a/core/core-domain/src/main/java/com/pgms/coredomain/domain/event/EventReview.java +++ b/core/core-domain/src/main/java/com/pgms/coredomain/domain/event/EventReview.java @@ -55,4 +55,11 @@ public EventReview(Integer score, String content, Event event, Member member) { public void updateEventReview(String content) { this.content = content; } + + public boolean isSameReviewer(Member member) { + if (member != null) { + return this.member.equals(member); + } + return false; + } }