[URECA-49] Feat: DB 수정 반영 - #26
Conversation
📝 WalkthroughWalkthroughDB 스키마 변경에 따른 백엔드 인증 도메인 코드 조정입니다. Kakao OAuth 클라이언트에 이메일 동의 검증 로직을 추가했으며, MyBatis 매퍼에서 Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes 주요 검토 포인트✅ Kakao OAuth 검증 강화 (긍정적)이메일 동의 여부( 확인 사항:
|
| Check name | Status | Explanation | Resolution |
|---|---|---|---|
| Docstring Coverage | Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. | Write docstrings for the functions missing them to satisfy the coverage threshold. |
✅ Passed checks (4 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | 제목이 PR의 주요 변경사항인 DB 스키마 변경 반영을 명확하게 설명하고 있습니다. |
| Linked Issues check | ✅ Passed | DB 테이블 구조 변경(users, refresh_tokens)에 맞춘 auth 도메인 코드 수정이 적용되었고, 카카오 로그인 이메일/닉네임 저장 로직이 추가되었습니다. |
| Out of Scope Changes check | ✅ Passed | JWT 필터에서 logout 경로 제거는 보안/인증 로직과 직접 연관된 변경으로, 전체 인증 흐름 일관성을 위한 범위 내 변경입니다. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing touches
- 📝 Generate docstrings
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
There was a problem hiding this comment.
Actionable comments posted: 0
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/main/java/com/ureca/unity/domain/auth/service/oauth/KakaoOAuthClient.java (1)
103-119: 이메일 유효성 검증 강화 필요현재 코드는
has_email만 확인 후 이메일을 사용하는데, 카카오 공식 문서에 따르면 이것만으로는 부족합니다. 다음 필드들도 함께 검증해야 합니다:
is_email_valid:true여야 카카오 서버에서 실제 이메일이 반환됩니다 (필수)is_email_verified: 사용자가 이메일을 카카오에서 검증했는지 확인email_needs_agreement: 앱이 이메일 동의(스코프)를 얻어야 하는지 여부현재 구현은
has_email=true이더라도 이 필드들이 거짓이거나 사용자가 동의하지 않았다면 이메일이null로 올 수 있는데, 이를 필터링하지 않습니다.is_email_valid를 반드시 체크하고, 필요시email_needs_agreement를 통해 동의 미흡 여부를 클라이언트에 전달하세요.
* fix: jwt필터에서 logout엔드í �¬인트 제거 * fix: users 테이블 관련 수정 * fix: refresh_tokens 테이블 관련 수정 * feat: 카카오 로그인 시 이메일, 닉네임 저장 가능하도록 ì수정
* Initial commit * chore: 이슈 템플릿 생성 * chore: jira user create * chore: jira issue auto create * chore: jira issue auto close * chore: jira key auto prefix in commit&pr This workflow automatically prefixes pull request titles and new commits with the Jira issue key extracted from the branch name. * chore: GlobalExceptionHandler, ApiResponse 추가 * fix: auto jira key prefix * fix: auto jira key prefix * fix: auto jira key prefix * fix: jira key auto setting on pr * feat: Update code rabbit instruction * fix: pr jira key prefix에 pr type 추가 * fix: create-jira-issue issue type auto setting * fix: issue 양식 수정 Updated issue template title and branch description for clarity. * [URECA-21] Chore: domain/auth 및 global/security 구조 정립 (#8) * chore: domain/auth 구조 및 global/security 구조 분리 * chore: OAuth 공통부분 파일 작성 * chore: KakaoOAuthClient, GoogleOAuthClient 파일 생성 * chore: PR 템플릿 업로드 * chore: OAuthService 시그니처 변경, OAuthProvider Enum 도입, OAuthController 엔드포인트 정리, DTO 불변성 개선 * chore: OAuthController 입력 검증 추가, GlobalExceptionHandler 추가 * chore: GlobalExceptionHandler 에러 발생 시 내부 구현 노출 문제 및 로깅 누락 해결 * [URECA-27] Feat: Ureca 27/feat/oauth client (#14) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * [URECA-29] Feat: JWT 기반 AccessToken/RefreshToken 발급/재발급 및 로그아웃 구현 (#17) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * Fix: name처리 * Feat: WebMvcConfig 추가 - CORS 설정 * Feat: JWT 발급 로직 구현 * Feat: JWT 발급 로직 구현 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 인증 예외 401로 정리 + RefreshToken 설계/저장 * Feat: refresh api 구현 * Feat: 리프레쉬토큰 DB 저장 및 RefreshTokenMapper에 resultMap 적용 * Feat: Refresh Rotation 구현 * Feat: 로드아웃 구현 * Docs: .coderabbit.yaml 파일 수정 * Fix: JJWT 버전 수정 및 의ì¡올바르지 않은 ´ì 의존성 제거 * Fix: 쿠키 보안 설정 개선 및 SameSite 속성 추가 * Fix: 로그아웃 엔드포인트 보호 추가 및 로그아웃 서비스 레이어 결합도 제거 * Fix: ãrefreshtoken을 body로 부터 분리 * Fix: ãrefreRefreshTokenServiceImpl 수정 * Fix CookieUtils 유틸 분리 * Fix: 사ìChore하지 않는 import 정리 * Fix RefreshTokenServiceImpl 죽은 코드 제거 및 jjwt 버전 업그레이드 * Fix: 모든 쿠키 생성/삭제 로직을 CookieUtils로 통일 * Fix: Nitpick Comment 정리 * Fix: OAuthServiceImpl 패키지 헬퍼 메소드 분리 * Fix: JWT 서명 검증 먼저하도록 수정 * Fix: userId 변수 중복 선언 수정 * Fix: Refresh Token Rotation에서 Race Condition 해소 * Chore: 들여쓰기 수정 * Fix: 예외사항 범위 확장 * Fix: DB/JWT 시간 통일 및 Access/Refresh Token 타입 Claim 분리 * Fix: REFRESH_TOKEN_INVALID 적용 범위 확장 * [URECA-29] Feat: 스프링, 그래들 버전 다운그레이드 (#20) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * Fix: name처리 * Feat: WebMvcConfig 추가 - CORS 설정 * Feat: JWT 발급 로직 구현 * Feat: JWT 발급 로직 구현 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 인증 예외 401로 정리 + RefreshToken 설계/저장 * Feat: refresh api 구현 * Feat: 리프레쉬토큰 DB 저장 및 RefreshTokenMapper에 resultMap 적용 * Feat: Refresh Rotation 구현 * Feat: 로드아웃 구현 * Docs: .coderabbit.yaml 파일 수정 * Fix: JJWT 버전 수정 및 의ì¡올바르지 않은 ´ì 의존성 제거 * Fix: 쿠키 보안 설정 개선 및 SameSite 속성 추가 * Fix: 로그아웃 엔드포인트 보호 추가 및 로그아웃 서비스 레이어 결합도 제거 * Fix: ãrefreshtoken을 body로 부터 분리 * Fix: ãrefreRefreshTokenServiceImpl 수정 * Fix CookieUtils 유틸 분리 * Fix: 사ìChore하지 않는 import 정리 * Fix RefreshTokenServiceImpl 죽은 코드 제거 및 jjwt 버전 업그레이드 * Fix: 모든 쿠키 생성/삭제 로직을 CookieUtils로 통일 * Fix: Nitpick Comment 정리 * Fix: OAuthServiceImpl 패키지 헬퍼 메소드 분리 * Fix: JWT 서명 검증 먼저하도록 수정 * Fix: userId 변수 중복 선언 수정 * Fix: Refresh Token Rotation에서 Race Condition 해소 * Chore: 들여쓰기 수정 * Fix: 예외사항 범위 확장 * Fix: DB/JWT 시간 통일 및 Access/Refresh Token 타입 Claim 분리 * Fix: REFRESH_TOKEN_INVALID 적용 범위 확장 * fix: spring, gradle 버전 다운그레이드 * [URECA-41] Feat: Stt 구현 (#22) * feat: stt 1차 짧은 대화 성공 * fix: stt m4a to wav convert 추가 --------- Co-authored-by: 40food <40food@naver.com> * [URECA-48] Feat: 제미나이 요약 (#24) * chore: remove secrets and use env variables * URECA-48: remove secrets and use env variables * URECA-48: restore summary and gemini feature code (without secrets) * fix: STT 오류 고려한 Gemini 요약 프롬프트 보강 * fix: 오타 수정 * fix: Gemini 응답의 null 값에 대한 방어 로직 * fix: SummaryRequest 역직렬화 및 입력 검증 보강 * fix: Summary 저장 트랜잭션 처리 추가 * [URECA-49] Feat: DB 수정 반영 (#26) * fix: jwt필터에서 logout엔드í �¬인트 제거 * fix: users 테이블 관련 수정 * fix: refresh_tokens 테이블 관련 수정 * feat: 카카오 로그인 시 이메일, 닉네임 저장 가능하도록 ì수정 * fix: 쿠키 path 수정 * feat: me api 구현 - 2차 라우트 로직에 쓰임 * fix: 로그아웃 api 호출을 위한 JwtFilter 스킵 및 SecurityConfig 허용 * feat: withdrawal api 구현 * chore: .gitignore에 stt.json 파일 추가 * fix: .gitignore에 stt.json파일 추가 및 ì¿빈 쿠키 오탐 수정 * feat: 탈퇴 회원 재가입 기능 구현 --------- Co-authored-by: 박승연 <70251709+40food@users.noreply.github.com> Co-authored-by: Jiyeon <144954836+Chaejy@users.noreply.github.com> Co-authored-by: 박주이 <bagjui068@gmail.com> Co-authored-by: 40food <40food@naver.com>
* Initial commit * chore: 이슈 템플릿 생성 * chore: jira user create * chore: jira issue auto create * chore: jira issue auto close * chore: jira key auto prefix in commit&pr This workflow automatically prefixes pull request titles and new commits with the Jira issue key extracted from the branch name. * chore: GlobalExceptionHandler, ApiResponse 추가 * fix: auto jira key prefix * fix: auto jira key prefix * fix: auto jira key prefix * fix: jira key auto setting on pr * feat: Update code rabbit instruction * fix: pr jira key prefix에 pr type 추가 * fix: create-jira-issue issue type auto setting * fix: issue 양식 수정 Updated issue template title and branch description for clarity. * [URECA-21] Chore: domain/auth 및 global/security 구조 정립 (#8) * chore: domain/auth 구조 및 global/security 구조 분리 * chore: OAuth 공통부분 파일 작성 * chore: KakaoOAuthClient, GoogleOAuthClient 파일 생성 * chore: PR 템플릿 업로드 * chore: OAuthService 시그니처 변경, OAuthProvider Enum 도입, OAuthController 엔드포인트 정리, DTO 불변성 개선 * chore: OAuthController 입력 검증 추가, GlobalExceptionHandler 추가 * chore: GlobalExceptionHandler 에러 발생 시 내부 구현 노출 문제 및 로깅 누락 해결 * [URECA-27] Feat: Ureca 27/feat/oauth client (#14) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * [URECA-29] Feat: JWT 기반 AccessToken/RefreshToken 발급/재발급 및 로그아웃 구현 (#17) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * Fix: name처리 * Feat: WebMvcConfig 추가 - CORS 설정 * Feat: JWT 발급 로직 구현 * Feat: JWT 발급 로직 구현 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 인증 예외 401로 정리 + RefreshToken 설계/저장 * Feat: refresh api 구현 * Feat: 리프레쉬토큰 DB 저장 및 RefreshTokenMapper에 resultMap 적용 * Feat: Refresh Rotation 구현 * Feat: 로드아웃 구현 * Docs: .coderabbit.yaml 파일 수정 * Fix: JJWT 버전 수정 및 의ì¡올바르지 않은 ´ì 의존성 제거 * Fix: 쿠키 보안 설정 개선 및 SameSite 속성 추가 * Fix: 로그아웃 엔드포인트 보호 추가 및 로그아웃 서비스 레이어 결합도 제거 * Fix: ãrefreshtoken을 body로 부터 분리 * Fix: ãrefreRefreshTokenServiceImpl 수정 * Fix CookieUtils 유틸 분리 * Fix: 사ìChore하지 않는 import 정리 * Fix RefreshTokenServiceImpl 죽은 코드 제거 및 jjwt 버전 업그레이드 * Fix: 모든 쿠키 생성/삭제 로직을 CookieUtils로 통일 * Fix: Nitpick Comment 정리 * Fix: OAuthServiceImpl 패키지 헬퍼 메소드 분리 * Fix: JWT 서명 검증 먼저하도록 수정 * Fix: userId 변수 중복 선언 수정 * Fix: Refresh Token Rotation에서 Race Condition 해소 * Chore: 들여쓰기 수정 * Fix: 예외사항 범위 확장 * Fix: DB/JWT 시간 통일 및 Access/Refresh Token 타입 Claim 분리 * Fix: REFRESH_TOKEN_INVALID 적용 범위 확장 * [URECA-29] Feat: 스프링, 그래들 버전 다운그레이드 (#20) * Feat: User 엔티티 생성 * Feat OAuthClient 생성 및 Google, Kakao, Naver OAuthClient 구현 * Feat: OAuthServiceImpl 및 UserMapper.xml 구현 -> 로그인 요청 확인 및 DB 연동 * Fix: GoogleOAuthClient, NaverOAuthClient에 name에 대한 fallback 추가 * Fix: name처리 * Feat: WebMvcConfig 추가 - CORS 설정 * Feat: JWT 발급 로직 구현 * Feat: JWT 발급 로직 구현 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 검증: JWT 인증 필터 및 보안 설정 적용 * Feat: JWT 인증 예외 401로 정리 + RefreshToken 설계/저장 * Feat: refresh api 구현 * Feat: 리프레쉬토큰 DB 저장 및 RefreshTokenMapper에 resultMap 적용 * Feat: Refresh Rotation 구현 * Feat: 로드아웃 구현 * Docs: .coderabbit.yaml 파일 수정 * Fix: JJWT 버전 수정 및 의ì¡올바르지 않은 ´ì 의존성 제거 * Fix: 쿠키 보안 설정 개선 및 SameSite 속성 추가 * Fix: 로그아웃 엔드포인트 보호 추가 및 로그아웃 서비스 레이어 결합도 제거 * Fix: ãrefreshtoken을 body로 부터 분리 * Fix: ãrefreRefreshTokenServiceImpl 수정 * Fix CookieUtils 유틸 분리 * Fix: 사ìChore하지 않는 import 정리 * Fix RefreshTokenServiceImpl 죽은 코드 제거 및 jjwt 버전 업그레이드 * Fix: 모든 쿠키 생성/삭제 로직을 CookieUtils로 통일 * Fix: Nitpick Comment 정리 * Fix: OAuthServiceImpl 패키지 헬퍼 메소드 분리 * Fix: JWT 서명 검증 먼저하도록 수정 * Fix: userId 변수 중복 선언 수정 * Fix: Refresh Token Rotation에서 Race Condition 해소 * Chore: 들여쓰기 수정 * Fix: 예외사항 범위 확장 * Fix: DB/JWT 시간 통일 및 Access/Refresh Token 타입 Claim 분리 * Fix: REFRESH_TOKEN_INVALID 적용 범위 확장 * fix: spring, gradle 버전 다운그레이드 * [URECA-41] Feat: Stt 구현 (#22) * feat: stt 1차 짧은 대화 성공 * fix: stt m4a to wav convert 추가 --------- Co-authored-by: 40food <40food@naver.com> * [URECA-48] Feat: 제미나이 요약 (#24) * chore: remove secrets and use env variables * URECA-48: remove secrets and use env variables * URECA-48: restore summary and gemini feature code (without secrets) * fix: STT 오류 고려한 Gemini 요약 프롬프트 보강 * fix: 오타 수정 * fix: Gemini 응답의 null 값에 대한 방어 로직 * fix: SummaryRequest 역직렬화 및 입력 검증 보강 * fix: Summary 저장 트랜잭션 처리 추가 * [URECA-49] Feat: DB 수정 반영 (#26) * fix: jwt필터에서 logout엔드í �¬인트 제거 * fix: users 테이블 관련 수정 * fix: refresh_tokens 테이블 관련 수정 * feat: 카카오 로그인 시 이메일, 닉네임 저장 가능하도록 ì수정 * chore: ErrorCode 확장 * feat: OAuthToken 도메인 추가 * feat: provider 토큰 저장하도록 로직 수정 * feat: provideP unlink/revoke 클라이언트 추가 * feat: 기존 회원탈퇴 로직에 unlink, 토큰삭제 넣기 * feat: 재가입 회원도 requireOnboarding 값을 true로 받도록 수정 * fix: unlink 어노테이션 수정 * fix: 복원된 사용자 인메모리 상태 동기화 수정 * fix: 마이너 리뷰 수정 * fix: provider 검증 추가 * fix: ãunlink를 트랜잭션 밖으로 분리하ê * fix: RestTemplate 타임아웃 설정 * fix: RestTemplate 타임아웃 설정 * feat: TypeHandler를 통해 OAuthToken 암호화 * fix: TImeTemplate을 의존성 주입으로 변경 및 oauth_tokens expires_at 컬럼 시간대 통일 * fix: 코드 래빗 리뷰 수정 및 oauth * fix: oauth_tokens expires_at 컬럼 시간대 KST로 변경 * fix: ErrorCode 문구 수정 --------- Co-authored-by: 박승연 <70251709+40food@users.noreply.github.com> Co-authored-by: Jiyeon <144954836+Chaejy@users.noreply.github.com> Co-authored-by: 박주이 <bagjui068@gmail.com> Co-authored-by: 40food <40food@naver.com>
Key Changes
작업 내역
💬 공유사항 to 리뷰어
비고
Summary by CodeRabbit
릴리스 노트
버그 수정
기타
✏️ Tip: You can customize this high-level summary in your review settings.