Skip to content

Conversation

@jjaeroong
Copy link
Collaborator

@jjaeroong jjaeroong commented Jan 8, 2026

PR 타입(하나 이상의 PR 타입을 선택해주세요)

  • 기능 추가
  • 기능 삭제
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트
  • 리팩터링

반영 브랜치

ex) feat/login -> dev

작업 내용

추후 url 처리 수정 예정

테스트 결과

ex) 베이스 브랜치에 포함되기 위한 코드는 모두 정상적으로 동작해야 합니다. 결과물에 대한 스크린샷, GIF, 혹은 라이브

Summary by CodeRabbit

새로운 기능

  • OAuth 로그인 흐름 개선으로 임시 티켓 기반 인증 지원 추가
  • 로그인 티켓 교환 엔드포인트 추가로 보안 강화
  • 로그인 티켓 만료, 처리 오류 등 향상된 오류 메시지 및 처리 추가
  • 2분 유효기간의 일회용 로그인 티켓 시스템 도입으로 보안성 개선

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 8, 2026

Caution

Review failed

The pull request is closed.

🎯 코드 리뷰 분석

Walkthrough

로그인 티켓 기반 인증 메커니즘을 도입합니다. ErrorStatus에 티켓 관련 오류 상수를 추가하고, UserController에 티켓 교환 엔드포인트를 추가하며, Redis 기반 LoginTicketService로 일회용 티켓(2분 TTL)의 발급 및 소비를 관리합니다.

Changes

결집단 / 파일(들) 변경 요약
오류 상태 정의
src/main/java/stackpot/stackpot/apiPayload/code/status/ErrorStatus.java
5개의 로그인 티켓 관련 enum 상수 추가: LOGIN_TICKET_NOT_FOUND, LOGIN_TICKET_EXPIRED, LOGIN_TICKET_PARSE_FAILED, LOGIN_TICKET_SERIALIZE_FAILED, LOGIN_TICKET_DESERIALIZE_FAILED
티켓 서비스 구현
src/main/java/stackpot/stackpot/user/service/LoginTicketService.java
UUID 기반 티켓 발급 및 Redis 저장(login-ticket:{ticket} 네임스페이스, 2분 TTL), 티켓 소비 시 검증 및 삭제, Jackson 직렬화/역직렬화, 의존성 주입(StringRedisTemplate, ObjectMapper)
요청 DTO 추가
src/main/java/stackpot/stackpot/user/dto/request/ExchangeDto.java
티켓 필드를 포함하는 새 record 타입 정의
컨트롤러 확장
src/main/java/stackpot/stackpot/user/controller/UserController.java
LoginTicketService 의존성 추가, googleCallback 메서드 서명 수정(선택적 state 파라미터 추가), 새 엔드포인트 exchange(ExchangeDto dto) 추가로 티켓 교환 처리

Sequence Diagram(s)

sequenceDiagram
    participant Client
    participant OAuth Provider
    participant UserController
    participant LoginTicketService
    participant Redis
    participant Response

    Client->>OAuth Provider: 로그인 요청
    OAuth Provider->>UserController: googleCallback (code, state)
    UserController->>UserController: 사용자 인증 및 loginDto 생성
    UserController->>LoginTicketService: issue(loginDto)
    LoginTicketService->>LoginTicketService: UUID 생성 및 JSON 직렬화
    LoginTicketService->>Redis: login-ticket:{uuid} 저장 (TTL: 2분)
    LoginTicketService->>UserController: ticket 반환
    UserController->>Client: 티켓과 함께 응답
    
    Client->>UserController: exchange(ExchangeDto)
    UserController->>LoginTicketService: consume(ticket)
    LoginTicketService->>Redis: login-ticket:{ticket} 조회
    LoginTicketService->>LoginTicketService: JSON 역직렬화 및 검증
    LoginTicketService->>Redis: 티켓 삭제 (일회용)
    LoginTicketService->>UserController: loginDto 반환
    UserController->>Client: 최종 응답
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 분

Poem

🐰 환영합니다, 티켓의 마법 같은 흐름!
레디스 창고에 보물을 숨기고,
UUID의 열쇠로 한 번만 문을 열지요.
OAuth의 춤에 우아한 예술을 더하고,
2분의 시간 속에서 인증의 비결을 노래합니다! 🎫✨

✨ Finishing touches
  • 📝 Generate docstrings

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6423e62 and af4c575.

📒 Files selected for processing (4)
  • src/main/java/stackpot/stackpot/apiPayload/code/status/ErrorStatus.java
  • src/main/java/stackpot/stackpot/user/controller/UserController.java
  • src/main/java/stackpot/stackpot/user/dto/request/ExchangeDto.java
  • src/main/java/stackpot/stackpot/user/service/LoginTicketService.java

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@jjaeroong jjaeroong merged commit ed3b676 into main Jan 8, 2026
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants