Skip to content

Commit c3e92bb

Browse files
authored
Merge pull request #58 from WiSoft-PrePair/fix/sse-session-authorization
fix: SSE 세션 구독 엔드포인트에 소유자 인가 검증 추가(#51)
2 parents 08370d8 + 46d839e commit c3e92bb

3 files changed

Lines changed: 12 additions & 2 deletions

File tree

src/main/java/io/wisoft/prepair/prepair_api/controller/InterviewController.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,11 @@ public ApiResponse<Void> submitVideoAnswer(
9191
}
9292

9393
@GetMapping(value = "/questions/video-answers/{sessionId}/stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
94-
public SseEmitter subscribeSession(@PathVariable UUID sessionId) {
94+
public SseEmitter subscribeSession(
95+
@PathVariable UUID sessionId,
96+
@RequestHeader("X-User-Id") UUID memberId
97+
) {
98+
questionService.validateSessionOwner(sessionId, memberId);
9599
return sseEmitterManager.create(sessionId);
96100
}
97101
}
98-

src/main/java/io/wisoft/prepair/prepair_api/repository/SessionRepository.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
import org.springframework.data.jpa.repository.JpaRepository;
66

77
public interface SessionRepository extends JpaRepository<InterviewSession, UUID> {
8+
boolean existsByIdAndMemberId(UUID id, UUID memberId);
89
}

src/main/java/io/wisoft/prepair/prepair_api/service/question/QuestionService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,10 @@ public List<InterviewQuestion> generateVideoQuestions(UUID memberId, VideoInterv
7878
log.info("화상 면접 질문 생성 완료 - memberId: {}, sessionId: {}", memberId, session.getId());
7979
return questions;
8080
}
81+
82+
public void validateSessionOwner(UUID sessionId, UUID memberId) {
83+
if(!sessionRepository.existsByIdAndMemberId(sessionId, memberId)) {
84+
throw new BusinessException(ErrorCode.FORBIDDEN);
85+
}
86+
}
8187
}

0 commit comments

Comments
 (0)