diff --git a/src/main/java/io/company/localhost/common/security/handler/MemberAuthFailureHandler.java b/src/main/java/io/company/localhost/common/security/handler/MemberAuthFailureHandler.java index b978aaa..5bf065c 100644 --- a/src/main/java/io/company/localhost/common/security/handler/MemberAuthFailureHandler.java +++ b/src/main/java/io/company/localhost/common/security/handler/MemberAuthFailureHandler.java @@ -15,8 +15,6 @@ package io.company.localhost.common.security.handler; import com.fasterxml.jackson.databind.ObjectMapper; -import io.company.localhost.common.dto.ApiResponse; -import io.company.localhost.common.exception.code.UserErrorCode; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import org.springframework.http.MediaType; @@ -26,28 +24,42 @@ import org.springframework.security.web.authentication.AuthenticationFailureHand import org.springframework.stereotype.Component; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; @Component("failHandler") public class MemberAuthFailureHandler implements AuthenticationFailureHandler { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + response.setStatus(HttpServletResponse.SC_OK); response.setContentType(MediaType.APPLICATION_JSON_VALUE); - - ApiResponse res = UserErrorCode.BAD_CREDENTIAL.getApiResponse(); + + Map responseMap = new HashMap<>(); + responseMap.put("success", false); // 로그인 실패 표시 + String message = exception.getMessage(); + String errorCode; + String errorMessage; if (exception instanceof BadCredentialsException || message.startsWith("NOT_FOUND")) { - res = UserErrorCode.USER_NOT_FOUND.getApiResponse(); + errorCode = "USER_NOT_FOUND"; + errorMessage = "아이디 또는 비밀번호가 일치하지 않습니다."; } else if (message.startsWith("NOT_AUTHORIZED")) { - res = UserErrorCode.NOT_AUTHORIZED.getApiResponse(); + errorCode = "NOT_AUTHORIZED"; + errorMessage = "접근 권한이 없습니다."; } else if (message.startsWith("EXIT")) { - res = UserErrorCode.EXIT_USER.getApiResponse(); + errorCode = "EXIT_USER"; + errorMessage = "탈퇴한 사용자입니다."; + } else { + errorCode = "BAD_CREDENTIAL"; + errorMessage = "인증에 실패했습니다."; } + + responseMap.put("code", errorCode); + responseMap.put("message", errorMessage); - response.getWriter().write(mapper.writeValueAsString(res)); + response.getWriter().write(mapper.writeValueAsString(responseMap)); } }