22
33import java .util .Collection ;
44import java .util .stream .Collectors ;
5+ import jakarta .mail .MessagingException ;
56import jakarta .validation .constraints .NotBlank ;
67import jakarta .validation .constraints .NotNull ;
78
2425import umc .codeplay .dto .MemberRequestDTO ;
2526import umc .codeplay .dto .MemberResponseDTO ;
2627import umc .codeplay .jwt .JwtUtil ;
28+ import umc .codeplay .service .EmailService ;
2729import umc .codeplay .service .MemberService ;
2830
2931@ RestController
@@ -35,6 +37,7 @@ public class AuthController {
3537 private final AuthenticationManager authenticationManager ;
3638 private final JwtUtil jwtUtil ;
3739 private final MemberService memberService ;
40+ private final EmailService emailService ;
3841
3942 @ PostMapping ("/login" )
4043 public ApiResponse <MemberResponseDTO .LoginResultDTO > login (
@@ -104,4 +107,25 @@ public ApiResponse<MemberResponseDTO.LoginResultDTO> refresh(
104107 throw new GeneralHandler (ErrorStatus .INVALID_REFRESH_TOKEN );
105108 }
106109 }
110+
111+ // 비밀번호 찾기 및 변경. 이메일 인증
112+ @ PostMapping ("/password/reset/request" )
113+ public ApiResponse <String > resetPasswordRequest (
114+ @ RequestBody MemberRequestDTO .ResetPasswordDTO request ) throws MessagingException {
115+ emailService .sendCode (request .getEmail ());
116+ return ApiResponse .onSuccess ("메일로 인증번호가 전송되었습니다." );
117+ }
118+
119+ // 비밀번호 찾기 및 변경. 인증 코드 확인
120+ @ PostMapping ("/password/reset/verify" )
121+ public ApiResponse <String > resetPasswordVerify (
122+ @ RequestBody MemberRequestDTO .CheckVerificationCodeDTO request ) {
123+ boolean isValid = emailService .verifyCode (request .getEmail (), request .getCode ());
124+ if (isValid ) {
125+ return ApiResponse .onSuccess ("인증에 성공하였습니다." );
126+ // 이후에 비밀번호 변경 페이지 연결해 주어야 함.
127+ } else {
128+ throw new GeneralHandler (ErrorStatus .EMAIL_CODE_ERROR );
129+ }
130+ }
107131}
0 commit comments