Skip to content

Commit

Permalink
Merge pull request #124 from UMC-TripPiece/feature/123
Browse files Browse the repository at this point in the history
[feature] 이메일 인증번호 발송 시 중복 검사 추가
  • Loading branch information
StoneCAU authored Jan 22, 2025
2 parents 6eaef2a + 3b9523e commit 419f4d5
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public enum ErrorStatus implements BaseErrorCode {
VERIFICATION_CODE_MISMATCH(HttpStatus.BAD_REQUEST, "EMAIL400", "인증번호가 일치하지 않습니다."),
INVALID_INPUT(HttpStatus.BAD_REQUEST, "EMAIL400", "입력값이 유효하지 않습니다."),
VERIFICATION_CODE_NOT_SENT(HttpStatus.NOT_FOUND, "EMAIL404", "인증코드가 발송되지 않은 이메일입니다."),
DUPLICATION_EMAIL(HttpStatus.BAD_REQUEST, "EMAIL409", "이미 존재하는 중복된 이메일입니다."),
EMAIL_SEND_FAILED(HttpStatus.INTERNAL_SERVER_ERROR, "EMAIL500", "이메일 전송에 실패했습니다."),
EMAIL_TEMPLATE_ERROR(HttpStatus.INTERNAL_SERVER_ERROR, "EMAIL500", "이메일 템플릿을 읽는 중 오류가 발생했습니다."),

Expand Down
2 changes: 2 additions & 0 deletions src/main/java/umc/TripPiece/repository/UserRepository.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,6 @@ public interface UserRepository extends JpaRepository<User, Long> {
Optional<User> findByRefreshToken(String refreshToken);
Optional<User> findByEmailAndProviderId(String email, Long providerId);
Optional<User> findByProviderId(Long providerId);

boolean existsByEmail(String email);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import umc.TripPiece.apiPayload.exception.handler.UserHandler;
import umc.TripPiece.domain.VerificationCode;
import umc.TripPiece.apiPayload.ApiResponse;
import umc.TripPiece.repository.UserRepository;
import umc.TripPiece.repository.VerificationCodeRepository;
import umc.TripPiece.service.EmailService;
import umc.TripPiece.web.dto.request.EmailRequestDto;
Expand All @@ -22,12 +23,19 @@ public class EmailController {

private final EmailService emailService;
private final VerificationCodeRepository verificationCodeRepository;
private final UserRepository userRepository;

@PostMapping("/send")
@Operation(summary = "이메일 인증번호 전송 API",
description = "이메일로 6자리 인증번호 발송")
public ResponseEntity<ApiResponse<String>> sendVerificationCode(@RequestBody @Valid EmailRequestDto.SendCodeDto request) {
String email = request.getEmail();

// 중복된 이메일일 경우
if (userRepository.existsByEmail(email)) {
throw new UserHandler(ErrorStatus.DUPLICATION_EMAIL);
}

String code = emailService.generateVerificationCode();

VerificationCode verificationCode = new VerificationCode(email, code, 3); // 인증코드 유효시간 (3분)
Expand Down

0 comments on commit 419f4d5

Please sign in to comment.