-
Notifications
You must be signed in to change notification settings - Fork 1
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
refactor: 인증시 학교 이메일 인증 메일 전송 여부 판단 로직 추가 #513
Conversation
…into refactor/470-email-verification-modify
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
## Walkthrough
이번 변경 사항은 이메일 인증 프로세스를 개선하고, 사용자 대시보드 응답에 대학 이메일 인증 상태를 추가하는 데 중점을 두었습니다. Redis에 인증 정보를 저장하고, 해당 정보를 기반으로 이메일 전송 여부를 판단하는 로직이 도입되었습니다. 이러한 변경은 사용자 경험을 향상시키고, 보다 명확한 인증 상태 관리를 가능하게 합니다.
## Changes
| 파일 | 변경 요약 |
|------|-----------|
| `src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java`, `src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java` | 이메일 인증 관련 기능 강화 및 사용자 대시보드에 인증 상태 추가. Redis 사용을 통한 데이터 관리 개선. |
| `src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java` | 이메일 인증 서비스에 대한 통합 테스트 추가. |
| `src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java` | 이메일 전송 실패에 대한 새로운 오류 코드 추가. |
| `build.gradle` | 테스트 환경 설정 및 `testcontainers` 라이브러리 의존성 추가. |
## Assessment against linked issues
| Objective | Addressed | Explanation |
|-----------|-----------|-------------|
| 이메일 전송 여부 추가 ( #470 ) | ✅ | |
| Redis에 인증 정보 저장 및 조회 ( #470 ) | ✅ | |
| 대시보드에 인증 상태 포함 ( #470 ) | ✅ | |
> 🐇 변화의 춤을 춰요,
> 이메일 인증의 빛을 가져와,
> Redis에 저장, 확인해요,
> 대시보드에서 기쁨을 주며,
> 인증이 완료되면 모두 환호해요! 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? TipsChatThere are 3 ways to chat with CodeRabbit:
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 as PR comments)
Additionally, you can add CodeRabbit Configuration File (
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (13)
- src/main/java/com/gdschongik/gdsc/domain/discord/application/listener/PingpongListener.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationLinkSendService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/dao/UnivEmailVerificationRepository.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailVerification.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.java (2 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/dto/UnivVerificationStatus.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/dto/response/MemberDashboardResponse.java (2 hunks)
- src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1 hunks)
- src/main/resources/application-security.yml (1 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (1 hunks)
- src/test/java/com/gdschongik/gdsc/global/common/constant/MemberConstant.java (1 hunks)
Files skipped from review due to trivial changes (3)
- src/main/java/com/gdschongik/gdsc/domain/discord/application/listener/PingpongListener.java
- src/main/java/com/gdschongik/gdsc/domain/email/dao/UnivEmailVerificationRepository.java
- src/main/java/com/gdschongik/gdsc/domain/member/dto/UnivVerificationStatus.java
Additional comments not posted (28)
src/test/java/com/gdschongik/gdsc/global/common/constant/MemberConstant.java (1)
8-8
: 이메일 주소 업데이트 확인
UNIV_EMAIL
상수의 값이[email protected]
에서[email protected]
로 변경되었습니다. 이 변경 사항이 의도된 것인지 확인해 주세요.src/main/resources/application-security.yml (3)
18-18
: JWT 액세스 토큰 시크릿 값 업데이트
ACCESS_TOKEN
의 시크릿 값이 구체적인 문자열로 업데이트되었습니다. 이 값이 올바르게 설정되었는지 확인해 주세요.
21-21
: JWT 리프레시 토큰 시크릿 값 업데이트
REFRESH_TOKEN
의 시크릿 값이 구체적인 문자열로 업데이트되었습니다. 이 값이 올바르게 설정되었는지 확인해 주세요.
24-24
: 이메일 인증 토큰 시크릿 값 업데이트
EMAIL_VERIFICATION_TOKEN
의 시크릿 값이 구체적인 문자열로 업데이트되었습니다. 이 값이 올바르게 설정되었는지 확인해 주세요.src/main/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailVerification.java (5)
3-4
: Builder 패턴 도입
@Builder
어노테이션이 추가되어 객체 생성이 더 명확해졌습니다. 이 변경 사항이 의도된 것인지 확인해 주세요.
17-17
: verificationToken 필드 추가
verificationToken
필드가 추가되었습니다. 이 변경 사항이 데이터 모델에 맞는지 확인해 주세요.
20-20
: TTL 필드 이름 변경
timeToLiveInSeconds
필드가ttl
로 이름이 변경되었습니다. 이 변경 사항이 코드 전체에서 일관되게 반영되었는지 확인해 주세요.
22-27
: 프라이빗 생성자 도입프라이빗 생성자가 도입되어 객체 생성이 더 안전해졌습니다. 이 변경 사항이 의도된 것인지 확인해 주세요.
29-35
: 정적 팩토리 메서드 추가
of
정적 팩토리 메서드가 추가되어 객체 생성이 더 간편해졌습니다. 이 변경 사항이 의도된 것인지 확인해 주세요.src/main/java/com/gdschongik/gdsc/domain/member/dto/response/MemberDashboardResponse.java (2)
5-5
: 적절한 import 추가
UnivVerificationStatus
의 import가 적절하게 추가되었습니다.
16-22
: 메서드 시그니처 업데이트 확인
of
메서드가UnivVerificationStatus
를 포함하도록 업데이트되었습니다. 새로운 매개변수를 적절히 처리하고 있습니다.src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.java (3)
3-3
: 적절한 import 추가
RequirementStatus
와Schema
의 import가 적절하게 추가되었습니다.Also applies to: 8-8
12-22
: 생성자 및 메서드 시그니처 업데이트 확인생성자와
of
메서드가MemberAssociateRequirementDto
와UnivVerificationStatus
를 포함하도록 업데이트되었습니다. 새로운 매개변수를 적절히 처리하고 있습니다.
49-63
: 새로운 record 추가 확인
MemberAssociateRequirementDto
record가 새로 추가되었습니다. 이 record는 적절하게 정의되어 있으며 코드와 잘 통합되고 있습니다.src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3)
6-7
: 적절한 import 추가
UnivEmailVerificationRepository
와HongikUnivEmailValidator
의 import가 적절하게 추가되었습니다.
39-41
: 새로운 메서드 추가 확인
getUnivEmailVerificationFromRedis
메서드가 새로 추가되었습니다. 이 메서드는 적절하게 정의되어 있으며 코드와 잘 통합되고 있습니다.
58-69
: 새로운 메서드 추가 확인
validateUnivEmailVerification
메서드가 새로 추가되었습니다. 이 메서드는 적절하게 정의되어 있으며 코드와 잘 통합되고 있습니다.src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (2)
41-54
: 테스트 케이스가 적절합니다.레디스에 이메일 인증 정보가 존재하지 않을 때의 예외 처리를 잘 테스트하고 있습니다.
56-75
: 테스트 케이스가 적절합니다.인증 토큰과 레디스에 존재하는 인증 정보의 토큰이 다를 때의 예외 처리를 잘 테스트하고 있습니다.
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationLinkSendService.java (5)
5-5
: 필요한 import 문입니다.
UnivEmailVerificationRepository
를 사용하기 위해 필요한 import 문입니다.
11-11
: 필요한 import 문입니다.
JwtProperty
를 사용하기 위해 필요한 import 문입니다.
29-29
: 필요한 멤버 변수입니다.
univEmailVerificationRepository
는 새로운 기능을 위해 필요한 멤버 변수입니다.
36-36
: 필요한 멤버 변수입니다.
jwtProperty
는 새로운 기능을 위해 필요한 멤버 변수입니다.
67-78
: 메서드 수정이 적절합니다.
generateVerificationToken
메서드는 현재 멤버를 가져오고, 인증 토큰을 생성하며,UnivEmailVerification
객체를 생성하고 이를 저장소에 저장하도록 수정되었습니다. 이러한 변경은 새로운 기능을 위해 필요합니다.src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java (3)
10-10
: 필요한 import 문입니다.
UnivEmailVerificationService
를 사용하기 위해 필요한 import 문입니다.
41-41
: 필요한 멤버 변수입니다.
univEmailVerificationService
는 새로운 기능을 위해 필요한 멤버 변수입니다.
70-87
: 메서드 수정이 적절합니다.
getDashboard
메서드는 이제 멤버의 요구 사항과 레디스에 있는 인증 기록의 존재 여부에 따라 대학 인증 상태를 결정하는 로직을 포함합니다. 이러한 변경은 새로운 기능을 위해 필요합니다.src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1)
59-59
: 추가된EMAIL_NOT_SENT
오류 코드 확인새로운 오류 코드
EMAIL_NOT_SENT
는 이메일 인증 메일이 발송되지 않은 경우를 처리하기 위해 추가되었습니다. 메시지가 명확하고 다른 메시지와 일관성이 있습니다.
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (3)
- build.gradle (1 hunks)
- src/test/java/com/gdschongik/gdsc/config/TestRedisConfig.java (1 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (1 hunks)
Files skipped from review as they are similar to previous changes (1)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Additional comments not posted (5)
src/test/java/com/gdschongik/gdsc/config/TestRedisConfig.java (4)
3-6
: 필요한 새로운 import 문들새로운 import 문들은
BeforeAllCallback
,ExtensionContext
,GenericContainer
,DockerImageName
를 포함합니다. 이들은 테스트 컨테이너 설정에 필요합니다.
8-8
: 클래스 선언 변경클래스가 이제
BeforeAllCallback
인터페이스를 구현합니다. 이는 모든 테스트 실행 전에 Redis 컨테이너를 설정하기 위함입니다.
9-11
: Redis 설정 변수들Redis 이미지와 포트를 위한 상수 및
GenericContainer
인스턴스가 올바르게 정의되었습니다.
13-19
:beforeAll
메서드 구현이 메서드는 Redis 컨테이너를 시작하고, Redis 연결을 위한 시스템 속성을 설정합니다. 올바르게 구현되었습니다.
build.gradle (1)
63-63
: 새로운 테스트 의존성 추가
testcontainers
라이브러리를 위한 새로운 테스트 구현 의존성이 추가되었습니다. 이는 통합 테스트를 위한 컨테이너화된 환경을 제공하는 데 필요합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
몇가지 질문들만 남겨보았어요 호호
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailVerification.java
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확인했습니다
src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.java
Outdated
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Show resolved
Hide resolved
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (6)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java (4 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/domain/AssociateRequirement.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.java (2 hunks)
- src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (1 hunks)
Files skipped from review due to trivial changes (1)
- src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java
Files skipped from review as they are similar to previous changes (3)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Additional comments not posted (5)
src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.java (4)
12-16
: 좋습니다!새로운 매개변수와 주석이 추가되어 데이터 모델의 명확성과 기능이 향상되었습니다.
49-55
: 좋습니다!새로운 레코드가 데이터 구조를 개선하고 명확성을 높였습니다.
17-22
: 새로운 정적 팩토리 메서드 사용 확인새로운 정적 팩토리 메서드
of
의 사용이 올바른지 확인하십시오.Verification successful
새로운 정적 팩토리 메서드 사용 확인
새로운 정적 팩토리 메서드
of
는MemberDashboardResponse
클래스에서 올바르게 사용되고 있습니다. 이로써 해당 메서드의 사용이 확인되었습니다.
src/main/java/com/gdschongik/gdsc/domain/member/dto/response/MemberDashboardResponse.java
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the new static factory method `of`. # Test: Search for the usage of the method. Expect: Only occurrences of the new method. rg --type java -A 5 $'MemberFullDto.of'Length of output: 1488
56-62
: 새로운 정적 메서드 사용 확인새로운 정적 메서드
of
의 사용이 올바른지 확인하십시오.Verification successful
새로운 정적 메서드 사용 확인
새로운 정적 메서드
of
의 사용이 올바른 것으로 확인되었습니다. 해당 메서드는MemberFullDto
클래스 내에서 적절하게 사용되고 있습니다.
MemberFullDto
클래스에서MemberAssociateRequirementDto
객체를 생성하는 데 사용됨.Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the new static method `of`. # Test: Search for the usage of the method. Expect: Only occurrences of the new method. rg --type java -A 5 $'MemberAssociateRequirementDto.of'Length of output: 1516
Script:
#!/bin/bash # Description: Gather more context around the usage of the `of` method within `MemberFullDto.java`. # Display 10 lines before and after the usage of the method for better context. rg --type java -A 10 -B 10 $'MemberAssociateRequirementDto.of' src/main/java/com/gdschongik/gdsc/domain/member/dto/MemberFullDto.javaLength of output: 2144
src/main/java/com/gdschongik/gdsc/domain/member/domain/AssociateRequirement.java (1)
76-76
: 접근 제한자 변경 확인
isUnivSatisfied
메서드의 접근 제한자가 private에서 public으로 변경되었습니다. 이 변경이 필요한지 확인하십시오.Verification successful
접근 제한자 변경 확인
isUnivSatisfied
메서드는AssociateRequirement
클래스 내부와OnboardingMemberService
클래스에서 사용됩니다. 외부 클래스에서의 사용을 위해 접근 제한자를 private에서 public으로 변경하는 것이 필요합니다.
AssociateRequirement
클래스 내부 사용OnboardingMemberService
클래스 외부 사용Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify the usage of the `isUnivSatisfied` method. # Test: Search for the usage of the method. Expect: Only occurrences of the method with the new access modifier. rg --type java -A 5 $'isUnivSatisfied'Length of output: 2898
src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Outdated
Show resolved
Hide resolved
src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
Outdated
Show resolved
Hide resolved
Long memberId, MemberRole role, MemberBasicInfoDto basicInfo, AssociateRequirement associateRequirement) { | ||
public static MemberFullDto from(Member member) { | ||
Long memberId, | ||
@Schema(description = "멤버 역할", implementation = MemberRole.class) MemberRole role, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
개인적인 궁금함인데 implementation = MemberRole.class
와 같이 지정하면 어떤 효과가 있나요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
프론트에서 사용하는지는 모르겠지만, 스웨거 api 문서를 통한 api스펙 자동적용 툴들 (swagger-typescript-api, auto-generated 이런것들)사용할때 해당 객체를 �인식하게 해줘요!
저는 그냥 저렇게 항상 구현하도록 하는게 익숙해져서 그렇긴한데, 만약 안쓴다면 지워도 좋을거같아요!
어떻게생각하시나여
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 쓰는지 안쓰는지는 잘 몰라서 ㅎㅎ; 따로 요청사항 없는거 보면 안쓰는 것 같네요
일관성 측면에서 그냥 지우는게 나을듯 합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
음 재현님 이거는 제가 이슈파서 따로 진행하는게 좋을거같아요! 이번 pr말고도 스터디쪾도 있어서요!!
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (1)
- src/test/resources/application-test.yml (1 hunks)
Additional context used
Gitleaks
src/test/resources/application-test.yml
15-16: Detected a Generic API Key, potentially exposing access to various services and sensitive operations.
(generic-api-key)
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (2)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/domain/HongikUnivEmailValidator.java (2 hunks)
Files skipped from review as they are similar to previous changes (1)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
Additional comments not posted (2)
src/main/java/com/gdschongik/gdsc/domain/email/domain/HongikUnivEmailValidator.java (2)
28-32
: 주석이 잘 작성되었습니다.주석이 함수의 동작을 명확하게 설명하고 있습니다.
33-40
: 코드가 잘 작성되었습니다.이 메서드는 이메일 인증 토큰을 검증하는 로직을 포함하고 있으며, 두 가지 주요 에러 케이스를 잘 처리하고 있습니다.
CustomException 처리가 올바른지 확인하세요.
CustomException
이 올바르게 처리되고 있는지 확인하십시오.Verification successful
CustomException 처리가 올바른지 확인되었습니다.
CustomException
이 여러 파일에서 적절하게 처리되고 있음을 확인했습니다. 로그 기록, 응답 상태 설정, 값 반환 등 다양한 방식으로 예외 처리가 이루어지고 있습니다.
src/main/java/com/gdschongik/gdsc/global/security/JwtExceptionFilter.java
src/main/java/com/gdschongik/gdsc/domain/member/application/handler/MemberRegularEventHandler.java
src/main/java/com/gdschongik/gdsc/domain/member/application/handler/MemberAssociateEventHandler.java
src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java
src/main/java/com/gdschongik/gdsc/global/config/AuditorAwareImpl.java
Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Description: Verify that CustomException is correctly handled in the codebase. # Test: Search for CustomException handling. Expect: Proper handling in the codebase. rg --type java 'catch \(CustomException'Length of output: 649
Script:
#!/bin/bash # Extract and display the catch blocks for CustomException from the identified files for review. # Display the catch block in JwtExceptionFilter.java rg -A 5 'catch \(CustomException' src/main/java/com/gdschongik/gdsc/global/security/JwtExceptionFilter.java # Display the catch block in MemberRegularEventHandler.java rg -A 5 'catch \(CustomException' src/main/java/com/gdschongik/gdsc/domain/member/application/handler/MemberRegularEventHandler.java # Display the catch block in MemberAssociateEventHandler.java rg -A 5 'catch \(CustomException' src/main/java/com/gdschongik/gdsc/domain/member/application/handler/MemberAssociateEventHandler.java # Display the catch block in IssuedCoupon.java rg -A 5 'catch \(CustomException' src/main/java/com/gdschongik/gdsc/domain/coupon/domain/IssuedCoupon.java # Display the catch block in AuditorAwareImpl.java rg -A 5 'catch \(CustomException' src/main/java/com/gdschongik/gdsc/global/config/AuditorAwareImpl.javaLength of output: 1364
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
확인했습니다
src/main/java/com/gdschongik/gdsc/domain/email/domain/HongikUnivEmailValidator.java
Outdated
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Outdated
Show resolved
Hide resolved
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (7)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationLinkSendService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/domain/EmailVerificationStatusService.java (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailValidator.java (2 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java (3 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (1 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailValidatorTest.java (7 hunks)
Files skipped from review due to trivial changes (2)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
- src/test/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailValidatorTest.java
Files skipped from review as they are similar to previous changes (2)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
Additional comments not posted (5)
src/main/java/com/gdschongik/gdsc/domain/email/domain/UnivEmailValidator.java (2)
Line range hint
12-26
:
로직 검토메서드
validateSendUnivEmailVerificationLink
의 로직은 도메인 불일치, 형식 불일치 및 중복을 확인하며, 견고한 로직을 가지고 있습니다.
33-41
: 로직 검토메서드
validateUnivEmailVerification
의 로직은 토큰이 존재하는지와 현재 토큰과 일치하는지를 확인하며, 견고한 로직을 가지고 있습니다.src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationLinkSendService.java (3)
54-62
: 로직 검토메서드
send
의 로직은 이메일을 검증하고, 인증 토큰을 생성하며, 인증 링크를 작성하고, 이메일을 발송합니다. 견고한 로직을 가지고 있습니다.
67-78
: 로직 검토메서드
generateVerificationToken
의 로직은 현재 멤버를 가져오고, 토큰을 생성하며,UnivEmailVerification
객체를 생성하고 저장합니다. 견고한 로직을 가지고 있습니다.
80-81
: 로직 검토메서드
writeMailContentWithVerificationLink
의 로직은 포맷된 문자열을 사용하여 인증 링크를 포함합니다. 견고한 로직을 가지고 있습니다.
public UnivVerificationStatus determineStatus( | ||
Member member, Optional<UnivEmailVerification> univEmailVerification) { | ||
if (member.getAssociateRequirement().isUnivSatisfied()) { | ||
return UnivVerificationStatus.SATISFIED; | ||
} else { | ||
return univEmailVerification.isPresent() | ||
? UnivVerificationStatus.IN_PROGRESS | ||
: UnivVerificationStatus.PENDING; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
로직 검토 및 테스트 추가 제안
메서드 determineStatus
의 로직은 명확하고 의도한 기능과 일치합니다.
그러나, 이 메서드에 대한 단위 테스트가 없다면 추가하는 것이 좋습니다.
단위 테스트 코드를 생성하거나 GitHub 이슈를 열어 이 작업을 추적할까요?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
미리 어푸르브 해두겠습니다!
몇가지 확인 부탁드려요!
src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
Outdated
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Outdated
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Outdated
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Show resolved
Hide resolved
...test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
마이너 코멘트 하나 있습니다
미리 승인해둘게요
…into refactor/470-email-verification-modify
Job Summary for GradleCheck Style and Test to Develop :: build-test
|
There was a problem hiding this 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
Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Files selected for processing (5)
- build.gradle (1 hunks)
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java (3 hunks)
- src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java (1 hunks)
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java (1 hunks)
Files skipped from review due to trivial changes (1)
- src/main/java/com/gdschongik/gdsc/global/exception/ErrorCode.java
Files skipped from review as they are similar to previous changes (4)
- build.gradle
- src/main/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationService.java
- src/main/java/com/gdschongik/gdsc/domain/member/application/OnboardingMemberService.java
- src/test/java/com/gdschongik/gdsc/domain/email/application/UnivEmailVerificationServiceTest.java
🌱 관련 이슈
📌 작업 내용 및 특이사항
이메일 인증메일 보낼때 redis에 저장하도록 하고
이메일 토큰을 검증할때 redis에 조회하여
토큰이 존재하면 같은토큰인지 검증합니다.(여러번 인증메일보내면 가장 최근꺼만 인증가능하도록)
존재하지 않으면 에러를 뱉습니다.
대시보드의 이메일 인증 상태 조회에 이 토큰존재 여부로 IN_PROGRESS 상태를 결정합니다.
추가로 application-secret.yml에 jwt값들 default 지정한 이유는 테스트에서 값을 가져와야하기 때문입니다.
📝 참고사항
📚 기타
Summary by CodeRabbit
New Features
EMAIL_NOT_SENT
를 추가하여 이메일 발송 실패를 구체적으로 처리합니다.Bug Fixes