diff --git a/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserVerifyController.java b/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserVerifyController.java index 89e94a09..87644df6 100644 --- a/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserVerifyController.java +++ b/src/main/java/org/ezcode/codetest/presentation/usermanagement/UserVerifyController.java @@ -1,17 +1,15 @@ package org.ezcode.codetest.presentation.usermanagement; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.HttpHeaders; import org.ezcode.codetest.application.usermanagement.auth.dto.request.FindPasswordRequest; import org.ezcode.codetest.application.usermanagement.user.dto.request.ResetPasswordRequest; import org.ezcode.codetest.application.usermanagement.auth.dto.request.SendEmailRequest; import org.ezcode.codetest.application.usermanagement.auth.dto.response.FindPasswordResponse; import org.ezcode.codetest.application.usermanagement.auth.dto.response.SendEmailResponse; -import org.ezcode.codetest.application.usermanagement.auth.dto.response.VerifyEmailCodeResponse; import org.ezcode.codetest.application.usermanagement.auth.service.AuthService; import org.ezcode.codetest.application.usermanagement.user.dto.response.ChangeUserPasswordResponse; import org.ezcode.codetest.application.usermanagement.user.dto.response.VerifyFindPasswordResponse; import org.ezcode.codetest.domain.user.model.entity.AuthUser; +import org.ezcode.codetest.domain.user.exception.UserException; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; @@ -21,13 +19,19 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.util.UriComponentsBuilder; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; + @Slf4j @RestController @RequiredArgsConstructor @@ -48,11 +52,34 @@ public ResponseEntity sendMailCode( //이메일에서 버튼 클릭하면 자동으로 연결 @Operation(summary = "이메일 코드 입력 및 인증", description = "이메일로 받은 코드를 입력하여 이메일 인증된 회원으로 전환합니다") @GetMapping("/auth/verify") - public ResponseEntity verifyEmailCode( + public void verifyEmailCode( @RequestParam String email, - @RequestParam String key - ){ - return ResponseEntity.status(HttpStatus.OK).body(authService.verifyEmailCode(email, key)); + @RequestParam String key, + HttpServletResponse response + ) throws IOException { + try { + authService.verifyEmailCode(email, key); + + // 성공 시 프론트엔드로 리디렉션 + String redirectUrl = UriComponentsBuilder + .fromUriString("https://ezcode.my/email-verify-success") + .queryParam("status", "success") + .build() + .toUriString(); + + response.sendRedirect(redirectUrl); + } catch (UserException e) { + // 실패 시 프론트엔드로 리디렉션 (에러 메시지 포함) + String errorMessage = URLEncoder.encode(e.getMessage(), StandardCharsets.UTF_8); + String redirectUrl = UriComponentsBuilder + .fromUriString("https://ezcode.my/email-verify-failure") + .queryParam("status", "failure") + .queryParam("message", errorMessage) + .build() + .toUriString(); + + response.sendRedirect(redirectUrl); + } }