diff --git a/src/main/java/com/depromeet/sulsul/common/interceptor/AuthInterceptor.java b/src/main/java/com/depromeet/sulsul/common/interceptor/AuthInterceptor.java index 3e30f74..16b3dd9 100644 --- a/src/main/java/com/depromeet/sulsul/common/interceptor/AuthInterceptor.java +++ b/src/main/java/com/depromeet/sulsul/common/interceptor/AuthInterceptor.java @@ -1,7 +1,8 @@ package com.depromeet.sulsul.common.interceptor; +import static com.depromeet.sulsul.util.HttpResponseUtil.processWithErrorResponseDto; import static com.depromeet.sulsul.util.PropertyUtil.getMemberIdFromPrincipal; -import static org.apache.http.HttpStatus.SC_UNAUTHORIZED; +import static org.springframework.http.HttpStatus.UNAUTHORIZED; import com.depromeet.sulsul.domain.member.entity.Member; import com.depromeet.sulsul.domain.member.repository.MemberRepository; @@ -30,11 +31,11 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons long memberIdFromPrincipal = getMemberIdFromPrincipal( SecurityContextHolder.getContext().getAuthentication()); - Optional memberOptional = memberRepository.findById(memberIdFromPrincipal); + Optional memberOptional = memberRepository.findByIdAndDeletedAtIsNotNull(memberIdFromPrincipal); if (memberOptional.isEmpty()) { log.debug("There is no member corresponding to the id that exists in the token."); - response.sendError(SC_UNAUTHORIZED, "There is no member corresponding to the id that exists in the token."); + processWithErrorResponseDto("[ERROR] 존재하지 않는 사용자입니다.", UNAUTHORIZED, response); return false; } diff --git a/src/main/java/com/depromeet/sulsul/domain/member/repository/MemberRepository.java b/src/main/java/com/depromeet/sulsul/domain/member/repository/MemberRepository.java index 08a1b0f..07685b7 100644 --- a/src/main/java/com/depromeet/sulsul/domain/member/repository/MemberRepository.java +++ b/src/main/java/com/depromeet/sulsul/domain/member/repository/MemberRepository.java @@ -1,9 +1,11 @@ package com.depromeet.sulsul.domain.member.repository; import com.depromeet.sulsul.domain.member.entity.Member; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; public interface MemberRepository extends JpaRepository, MemberRepositoryCustom { Long findLevelById(Long id); + Optional findByIdAndDeletedAtIsNotNull(Long id); } diff --git a/src/main/java/com/depromeet/sulsul/domain/token/service/JwtTokenService.java b/src/main/java/com/depromeet/sulsul/domain/token/service/JwtTokenService.java index 757f78a..b135dd2 100644 --- a/src/main/java/com/depromeet/sulsul/domain/token/service/JwtTokenService.java +++ b/src/main/java/com/depromeet/sulsul/domain/token/service/JwtTokenService.java @@ -36,7 +36,8 @@ public TokenDto publishAccessToken(HttpServletResponse response, String refreshT Claims claims = jwtTokenProvider.getAllClaimsFromToken(refreshToken); Long memberId = Long.parseLong(claims.getSubject()); - Member member = memberRepository.findById(memberId).orElseThrow(MemberNotFoundException::new); + Member member = memberRepository.findById(memberId) + .orElseThrow(MemberNotFoundException::new); String newAccessToken = jwtTokenProvider.createAccessToken(member); String newRefreshToken = jwtTokenProvider.createRefreshToken(member); diff --git a/src/main/java/com/depromeet/sulsul/oauth2/handler/CustomAuthenticationEntryPoint.java b/src/main/java/com/depromeet/sulsul/oauth2/handler/CustomAuthenticationEntryPoint.java index c34b78c..590ad00 100644 --- a/src/main/java/com/depromeet/sulsul/oauth2/handler/CustomAuthenticationEntryPoint.java +++ b/src/main/java/com/depromeet/sulsul/oauth2/handler/CustomAuthenticationEntryPoint.java @@ -1,20 +1,18 @@ package com.depromeet.sulsul.oauth2.handler; +import static com.depromeet.sulsul.util.HttpResponseUtil.processWithErrorResponseDto; import static org.springframework.http.HttpStatus.BAD_REQUEST; import static org.springframework.http.HttpStatus.UNAUTHORIZED; -import com.depromeet.sulsul.common.response.dto.ResponseDto; import com.depromeet.sulsul.oauth2.filter.JwtAuthenticationFilter; import com.fasterxml.jackson.databind.ObjectMapper; -import org.springframework.http.HttpStatus; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.web.AuthenticationEntryPoint; -import org.springframework.stereotype.Component; - +import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import java.io.IOException; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; @Component public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { @@ -28,30 +26,11 @@ public void commence(HttpServletRequest request, HttpServletResponse response, Integer jwtParseResultWhenDenied = Integer.parseInt( response.getHeader(JwtAuthenticationFilter.JWT_PARSE_RESULT)); - setResponseJsonType(response); - if (jwtParseResultWhenDenied == BAD_REQUEST.value()) { processWithErrorResponseDto("[ERROR] jwt가 없거나 잘못 되었습니다.", BAD_REQUEST, response); return; } - if (jwtParseResultWhenDenied == UNAUTHORIZED.value()) { - processWithErrorResponseDto("[ERROR] jwt가 만료되었습니다.", UNAUTHORIZED, response); - return; - } - - response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getLocalizedMessage()); - } - - private void processWithErrorResponseDto(String errorMessage, HttpStatus httpStatus, - HttpServletResponse response) throws IOException { - String responseBodyWithJson = objectMapper.writeValueAsString( - ResponseDto.ERROR(errorMessage, httpStatus)); - response.getWriter().write(responseBodyWithJson); - response.setStatus(httpStatus.value()); - } - private void setResponseJsonType(HttpServletResponse response) { - response.setContentType("application/json"); - response.setCharacterEncoding("utf-8"); + processWithErrorResponseDto("[ERROR] jwt가 만료되었습니다.", UNAUTHORIZED, response); } } diff --git a/src/main/java/com/depromeet/sulsul/util/HttpResponseUtil.java b/src/main/java/com/depromeet/sulsul/util/HttpResponseUtil.java new file mode 100644 index 0000000..3f42bef --- /dev/null +++ b/src/main/java/com/depromeet/sulsul/util/HttpResponseUtil.java @@ -0,0 +1,26 @@ +package com.depromeet.sulsul.util; + +import com.depromeet.sulsul.common.response.dto.ResponseDto; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; +import org.springframework.http.HttpStatus; + +public class HttpResponseUtil { + + private static final ObjectMapper objectMapper = new ObjectMapper(); + + public static void processWithErrorResponseDto(String errorMessage, HttpStatus httpStatus, + HttpServletResponse response) throws IOException { + String responseBodyWithJson = objectMapper.writeValueAsString( + ResponseDto.ERROR(errorMessage, httpStatus)); + setResponseJsonType(response); + response.getWriter().write(responseBodyWithJson); + response.setStatus(httpStatus.value()); + } + + public static void setResponseJsonType(HttpServletResponse response) { + response.setContentType("application/json"); + response.setCharacterEncoding("utf-8"); + } +} diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ff6a672..a38d1ca 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -32,3 +32,9 @@ cloud: bucket: sulsul-media-bucket stack: auto: false + +logging: + level: + org: + hibernate: + type: trace \ No newline at end of file