11package org .ezcode .codetest .presentation .usermanagement ;
22
3- import org .springframework .beans .factory .annotation .Value ;
4- import org .springframework .http .HttpHeaders ;
53import org .ezcode .codetest .application .usermanagement .auth .dto .request .FindPasswordRequest ;
64import org .ezcode .codetest .application .usermanagement .user .dto .request .ResetPasswordRequest ;
75import org .ezcode .codetest .application .usermanagement .auth .dto .request .SendEmailRequest ;
86import org .ezcode .codetest .application .usermanagement .auth .dto .response .FindPasswordResponse ;
97import org .ezcode .codetest .application .usermanagement .auth .dto .response .SendEmailResponse ;
10- import org .ezcode .codetest .application .usermanagement .auth .dto .response .VerifyEmailCodeResponse ;
118import org .ezcode .codetest .application .usermanagement .auth .service .AuthService ;
129import org .ezcode .codetest .application .usermanagement .user .dto .response .ChangeUserPasswordResponse ;
1310import org .ezcode .codetest .application .usermanagement .user .dto .response .VerifyFindPasswordResponse ;
1411import org .ezcode .codetest .domain .user .model .entity .AuthUser ;
12+ import org .ezcode .codetest .domain .user .exception .UserException ;
1513import org .springframework .http .HttpStatus ;
1614import org .springframework .http .ResponseEntity ;
1715import org .springframework .security .core .annotation .AuthenticationPrincipal ;
2119import org .springframework .web .bind .annotation .RequestMapping ;
2220import org .springframework .web .bind .annotation .RequestParam ;
2321import org .springframework .web .bind .annotation .RestController ;
22+ import org .springframework .web .util .UriComponentsBuilder ;
2423
2524import io .swagger .v3 .oas .annotations .Operation ;
2625import io .swagger .v3 .oas .annotations .tags .Tag ;
26+ import jakarta .servlet .http .HttpServletResponse ;
2727import jakarta .validation .Valid ;
2828import lombok .RequiredArgsConstructor ;
2929import 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