Skip to content

Commit 206fd47

Browse files
authored
feat: 이메일 인증 코드 검증 후 리디렉션 기능 추가 (#208)
- verifyEmailCode 메서드를 수정하여 이메일 인증 후 성공 및 실패 시 각각 다른 URL로 리디렉션하도록 구현 - UserException 발생 시 에러 메시지를 포함한 실패 리디렉션 추가 - HttpServletResponse를 사용하여 클라이언트에게 직접 리디렉션 응답 전송
1 parent 08f1926 commit 206fd47

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/main/java/org/ezcode/codetest/presentation/usermanagement/UserVerifyController.java

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package org.ezcode.codetest.presentation.usermanagement;
22

3-
import org.springframework.beans.factory.annotation.Value;
4-
import org.springframework.http.HttpHeaders;
53
import org.ezcode.codetest.application.usermanagement.auth.dto.request.FindPasswordRequest;
64
import org.ezcode.codetest.application.usermanagement.user.dto.request.ResetPasswordRequest;
75
import org.ezcode.codetest.application.usermanagement.auth.dto.request.SendEmailRequest;
86
import org.ezcode.codetest.application.usermanagement.auth.dto.response.FindPasswordResponse;
97
import org.ezcode.codetest.application.usermanagement.auth.dto.response.SendEmailResponse;
10-
import org.ezcode.codetest.application.usermanagement.auth.dto.response.VerifyEmailCodeResponse;
118
import org.ezcode.codetest.application.usermanagement.auth.service.AuthService;
129
import org.ezcode.codetest.application.usermanagement.user.dto.response.ChangeUserPasswordResponse;
1310
import org.ezcode.codetest.application.usermanagement.user.dto.response.VerifyFindPasswordResponse;
1411
import org.ezcode.codetest.domain.user.model.entity.AuthUser;
12+
import org.ezcode.codetest.domain.user.exception.UserException;
1513
import org.springframework.http.HttpStatus;
1614
import org.springframework.http.ResponseEntity;
1715
import org.springframework.security.core.annotation.AuthenticationPrincipal;
@@ -21,13 +19,19 @@
2119
import org.springframework.web.bind.annotation.RequestMapping;
2220
import org.springframework.web.bind.annotation.RequestParam;
2321
import org.springframework.web.bind.annotation.RestController;
22+
import org.springframework.web.util.UriComponentsBuilder;
2423

2524
import io.swagger.v3.oas.annotations.Operation;
2625
import io.swagger.v3.oas.annotations.tags.Tag;
26+
import jakarta.servlet.http.HttpServletResponse;
2727
import jakarta.validation.Valid;
2828
import lombok.RequiredArgsConstructor;
2929
import lombok.extern.slf4j.Slf4j;
3030

31+
import java.io.IOException;
32+
import java.net.URLEncoder;
33+
import java.nio.charset.StandardCharsets;
34+
3135
@Slf4j
3236
@RestController
3337
@RequiredArgsConstructor
@@ -48,11 +52,34 @@ public ResponseEntity<SendEmailResponse> sendMailCode(
4852
//이메일에서 버튼 클릭하면 자동으로 연결
4953
@Operation(summary = "이메일 코드 입력 및 인증", description = "이메일로 받은 코드를 입력하여 이메일 인증된 회원으로 전환합니다")
5054
@GetMapping("/auth/verify")
51-
public ResponseEntity<VerifyEmailCodeResponse> verifyEmailCode(
55+
public void verifyEmailCode(
5256
@RequestParam String email,
53-
@RequestParam String key
54-
){
55-
return ResponseEntity.status(HttpStatus.OK).body(authService.verifyEmailCode(email, key));
57+
@RequestParam String key,
58+
HttpServletResponse response
59+
) throws IOException {
60+
try {
61+
authService.verifyEmailCode(email, key);
62+
63+
// 성공 시 프론트엔드로 리디렉션
64+
String redirectUrl = UriComponentsBuilder
65+
.fromUriString("https://ezcode.my/email-verify-success")
66+
.queryParam("status", "success")
67+
.build()
68+
.toUriString();
69+
70+
response.sendRedirect(redirectUrl);
71+
} catch (UserException e) {
72+
// 실패 시 프론트엔드로 리디렉션 (에러 메시지 포함)
73+
String errorMessage = URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8);
74+
String redirectUrl = UriComponentsBuilder
75+
.fromUriString("https://ezcode.my/email-verify-failure")
76+
.queryParam("status", "failure")
77+
.queryParam("message", errorMessage)
78+
.build()
79+
.toUriString();
80+
81+
response.sendRedirect(redirectUrl);
82+
}
5683
}
5784

5885

0 commit comments

Comments
 (0)