Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

provider를 통해 member를 조회하도록 수정 #793

Merged
merged 1 commit into from
Dec 4, 2024

Conversation

jschoi-96
Copy link
Contributor

@jschoi-96 jschoi-96 commented Dec 4, 2024

💡 작업 내용

  • findByEmail에서 email이 아닌 provider + "_" + email로 조회하도록 수정

💡 자세한 설명

(가능한 한 자세히 작성해 주시면 도움이 됩니다.)

📗 참고 자료 (선택)

📢 리뷰 요구 사항 (선택)

🚩 후속 작업 (선택)

✅ 셀프 체크리스트

  • PR 제목을 형식에 맞게 작성했나요?
  • 브랜치 전략에 맞는 브랜치에 PR을 올리고 있나요?
  • 이슈는 close 했나요?
  • Reviewers, Labels, Projects를 등록했나요?
  • 작업 도중 문서 수정이 필요한 경우 잘 수정했나요?
  • 테스트는 잘 통과했나요?
  • 불필요한 코드는 제거했나요?

closes #792

Summary by CodeRabbit

  • 새로운 기능

    • OAuth2 공급자와 이메일을 결합하여 사용자 식별 방식을 개선했습니다.
    • 새로운 회원의 데이터 저장 시 일관성을 유지하기 위해 수정된 이메일 형식을 사용합니다.
  • 버그 수정

    • 기존 회원의 정보 조회 로직은 변경되지 않았습니다.

@jschoi-96 jschoi-96 added 🐛 bug 버그 발견 D-0 긴급 이슈에 대한 작업 labels Dec 4, 2024
@jschoi-96 jschoi-96 self-assigned this Dec 4, 2024
@jschoi-96 jschoi-96 linked an issue Dec 4, 2024 that may be closed by this pull request
Copy link
Contributor

coderabbitai bot commented Dec 4, 2024

Walkthrough

CustomOAuth2UserService 클래스의 이메일 기반 멤버 검색 로직이 수정되었습니다. 이전에는 이메일을 직접 사용하여 멤버를 찾았으나, 이제는 provider + "_" + email 형식으로 변경하여 멤버를 검색합니다. 이로 인해 서로 다른 OAuth2 제공자의 이메일이 구분되어 관리됩니다. 새로운 멤버를 위한 Oauth2Dto 객체 구성 시에도 수정된 이메일 형식이 포함되어 일관성을 유지합니다. 기존 멤버에 대한 로직은 변경되지 않았습니다.

Changes

파일 경로 변경 요약
src/main/java/balancetalk/global/oauth2/service/CustomOAuth2UserService.java 이메일 검색 로직을 provider + "_" + email 형식으로 수정. 새로운 멤버의 Oauth2Dto 객체에 수정된 이메일 형식 포함.

Assessment against linked issues

Objective Addressed Explanation
이메일 중복 문제 해결 (#792)

Possibly related PRs

Suggested labels

✨ feature

Suggested reviewers

  • gywns0417
  • Hanjaemo

🐰 새로운 이메일로,
중복을 피하고,
제공자와 함께,
멤버를 찾아요!
함께하는 로그인,
더 이상 혼란 없어요!
모두가 행복한 세상! 🌟


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

sonarqubecloud bot commented Dec 4, 2024

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (2)
src/main/java/balancetalk/global/oauth2/service/CustomOAuth2UserService.java (2)

Line range hint 52-60: 신규 회원 생성 시 이메일 형식 검증이 필요합니다.

신규 회원 생성 시에도 provider를 접두어로 사용하여 이메일을 저장하고 있습니다. 하지만 이메일 형식에 대한 추가 검증이 필요해 보입니다.

다음과 같은 개선사항을 제안드립니다:

 if (findMember == null) {
+    // 이메일 형식 검증
+    if (!isValidEmail(email)) {
+        throw new IllegalArgumentException("잘못된 이메일 형식입니다.");
+    }
+    String providerEmail = provider + "_" + email;
     String encodedPassword = passwordEncoder().encode(oauth2Password);
     Oauth2Dto oauth2Dto = Oauth2Dto.builder()
             .name(hideNickname(email))
-            .email(provider + "_" + email)
+            .email(providerEmail)
             .role(Role.USER)
             .password(encodedPassword)
             .build();

Line range hint 64-71: 기존 회원 처리 로직에 대한 주석 오타를 수정해주세요.

"회원이 존재할 떄" 부분의 오타를 수정하는 것이 좋겠습니다.

다음과 같이 수정을 제안드립니다:

-        else { // 회원이 존재할 떄
+        else { // 회원이 존재할 때
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 086449f and a12de68.

📒 Files selected for processing (1)
  • src/main/java/balancetalk/global/oauth2/service/CustomOAuth2UserService.java (1 hunks)
🔇 Additional comments (1)
src/main/java/balancetalk/global/oauth2/service/CustomOAuth2UserService.java (1)

48-48: 이메일 조회 로직이 개선되었습니다.

provider를 접두어로 사용하여 이메일을 조회하도록 변경한 것이 적절합니다. 이를 통해 서로 다른 소셜 로그인 제공자 간의 이메일 중복 문제가 해결될 것으로 보입니다.

다음 스크립트를 실행하여 이메일 조회 로직의 일관성을 확인하겠습니다:

@jschoi-96 jschoi-96 merged commit f7ae91b into main Dec 4, 2024
4 checks passed
@jschoi-96 jschoi-96 deleted the bug/792-social-login-error branch December 4, 2024 16:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 bug 버그 발견 D-0 긴급 이슈에 대한 작업
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

소셜 로그인 시 이메일이 중복되는 오류
2 participants