Conversation
laura-jung
left a comment
There was a problem hiding this comment.
역시 깔끔 그자체네요....! 많이 배워갑니다아....
제가 아는 선에서 코멘트 조금 달아두어서 확인부탁드립니다!
| "/api/auth/reissue", | ||
| "/api/auth/email/**", | ||
| "/api/auth/signup", | ||
| "/api/auth/terms", |
There was a problem hiding this comment.
이부분은 termsController의 getTerms와 다른 경로인건가요? 만약 같은 경로라면 경로 수정해야할 것 같습니다!
There was a problem hiding this comment.
getTerms는 메서드 네임이고 이 메서드에 매핑되는 엔드포인트는 /api/auth/terms가 맞습니다!
|
|
||
| Member member = memberRepository.save( | ||
| Member.create(request.email(), passwordEncoder.encode(request.password()), Role.ONBOARDING) | ||
| ); |
There was a problem hiding this comment.
동일 이메일로 회원가입 요청 두 개가 동시에 들어오면 두 이메일 모두 중복 검사를 통과할 수 있을 것 같네요....
DB에 이메일 unique 인덱스를 추가하는게 어떨까요?
There was a problem hiding this comment.
심사 기준에서 소스코드의 완성도를 크게 보는 것 같다고 생각하지 않았어서( 공모전 안내사항에 'AI 사용 가능. 작동 가능하기만 하면 된다'고 명시되어 있었던 것 같음) 동시성이나 성능을 따로 고려하지 않았습니다.. ㅎ
추후 시간여유가 된다면 작업해보는 것도 좋을 것 같습니다!
| public void verify(final String email, final String inputCode) { | ||
| String storedCode = codeStore.getCode(email) | ||
| .orElseThrow(() -> new JjinException(MemberErrorCode.VERIFICATION_CODE_NOT_FOUND)); | ||
|
|
||
| if (!storedCode.equals(inputCode)) { | ||
| throw new JjinException(MemberErrorCode.VERIFICATION_CODE_MISMATCH); | ||
| } | ||
|
|
||
| codeStore.deleteCode(email); | ||
| codeStore.markVerified(email, verifiedTtlSeconds); | ||
| log.info("이메일 인증 완료: email={}", email); | ||
| } |
There was a problem hiding this comment.
현재 이메일 인증에 대한 시도 횟수가 따로 제한되어있지는 않은 것 같습니다! 저도 이번에 알게된 내용인데 메일 재전송 API에도 쿨다운이 있어야 SMTP 스팸과 쿼터 소진을 막을 수 있다고 합니다....! 지금 당장 중요한 기능은 아니지만 도입해보면 좋을 것 같아요!
Related issue 🛠
Work Description ✏️
이메일 인증 / 회원가입 / 로그인
약관 동의
Trouble Shooting ⚽️
Related ScreenShot 📷
인증 코드 발송 API
인증 코드 검증 API
약관 목록 조회 API
회원가입 API
로그인 API
Uncompleted Tasks 😅
To Reviewers 📢