diff --git a/src/main/java/clap/server/config/security/SecurityConfig.java b/src/main/java/clap/server/adapter/inbound/security/SecurityConfig.java similarity index 96% rename from src/main/java/clap/server/config/security/SecurityConfig.java rename to src/main/java/clap/server/adapter/inbound/security/SecurityConfig.java index acd06625..ceb613c8 100644 --- a/src/main/java/clap/server/config/security/SecurityConfig.java +++ b/src/main/java/clap/server/adapter/inbound/security/SecurityConfig.java @@ -1,8 +1,8 @@ -package clap.server.config.security; +package clap.server.adapter.inbound.security; -import clap.server.adapter.inbound.security.LoginAttemptFilter; import clap.server.adapter.inbound.security.filter.JwtAuthenticationFilter; import clap.server.adapter.inbound.security.filter.JwtExceptionFilter; +import clap.server.adapter.inbound.security.filter.LoginAttemptFilter; import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.security.ConditionalOnDefaultWebSecurity; import org.springframework.boot.autoconfigure.security.SecurityProperties; @@ -24,7 +24,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; import org.springframework.web.cors.CorsConfigurationSource; -import static clap.server.config.security.WebSecurityUrl.*; +import static clap.server.adapter.inbound.security.WebSecurityUrl.*; @Configuration diff --git a/src/main/java/clap/server/adapter/inbound/security/WebSecurityUrl.java b/src/main/java/clap/server/adapter/inbound/security/WebSecurityUrl.java new file mode 100644 index 00000000..2324afbd --- /dev/null +++ b/src/main/java/clap/server/adapter/inbound/security/WebSecurityUrl.java @@ -0,0 +1,18 @@ +package clap.server.adapter.inbound.security; + +public class WebSecurityUrl { + private WebSecurityUrl() { + throw new IllegalStateException("Utility class"); + } + + public static final String [] HEALTH_CHECK_ENDPOINT = {"/health"}; + public static final String[] READ_ONLY_PUBLIC_ENDPOINTS = {"/favicon.ico"}; + public static final String LOGIN_ENDPOINT = "/api/auths/login"; + public static final String[] SWAGGER_ENDPOINTS = { + "/swagger/api-docs/**", "/swagger/v3/api-docs/**", + "/swagger-ui/**", "/swagger" + }; + public static final String REISSUANCE_ENDPOINTS = "/api/auths/reissuance"; + public static final String[] PUBLIC_ENDPOINTS = {LOGIN_ENDPOINT, REISSUANCE_ENDPOINTS}; + public static final String TEMPORARY_TOKEN_ALLOWED_ENDPOINT = "/api/members/initial-password"; +} diff --git a/src/main/java/clap/server/adapter/inbound/security/filter/JwtAuthenticationFilter.java b/src/main/java/clap/server/adapter/inbound/security/filter/JwtAuthenticationFilter.java index 17b91566..bb8a27c0 100644 --- a/src/main/java/clap/server/adapter/inbound/security/filter/JwtAuthenticationFilter.java +++ b/src/main/java/clap/server/adapter/inbound/security/filter/JwtAuthenticationFilter.java @@ -4,6 +4,7 @@ import clap.server.adapter.outbound.jwt.access.AccessTokenClaimKeys; import clap.server.application.port.outbound.auth.ForbiddenTokenPort; import clap.server.application.port.outbound.auth.JwtProvider; +import clap.server.exception.AuthException; import clap.server.exception.JwtException; import clap.server.exception.code.AuthErrorCode; import io.jsonwebtoken.Claims; @@ -27,12 +28,14 @@ import org.springframework.web.filter.OncePerRequestFilter; import java.io.IOException; +import java.util.Arrays; + +import static clap.server.adapter.inbound.security.WebSecurityUrl.*; @Slf4j @Component @RequiredArgsConstructor public class JwtAuthenticationFilter extends OncePerRequestFilter { - private static final String TEMPORARY_TOKEN_ALLOWED_ENDPOINT = "/api/members/initial-password"; private final UserDetailsService securityUserDetailsService; private final JwtProvider accessTokenProvider; private final JwtProvider temporaryTokenProvider; @@ -46,10 +49,13 @@ protected void doFilterInternal( @NotNull FilterChain filterChain ) throws ServletException, IOException { try { - if (isAnonymousRequest(request)) { + if (Arrays.asList(PUBLIC_ENDPOINTS).contains(request.getRequestURI())) { filterChain.doFilter(request, response); return; } + if (isAnonymousRequest(request)) { + throw new AuthException(AuthErrorCode.UNAUTHORIZED); + } String accessToken = resolveAccessToken(request); diff --git a/src/main/java/clap/server/adapter/inbound/security/filter/JwtErrorCodeUtil.java b/src/main/java/clap/server/adapter/inbound/security/filter/JwtErrorCodeUtil.java index b4fcb6c4..07104fc3 100644 --- a/src/main/java/clap/server/adapter/inbound/security/filter/JwtErrorCodeUtil.java +++ b/src/main/java/clap/server/adapter/inbound/security/filter/JwtErrorCodeUtil.java @@ -36,7 +36,7 @@ public static BaseErrorCode determineErrorCode(Exception exception, BaseErrorCod public static JwtException determineAuthErrorException(Exception exception) { return findAuthErrorException(exception).orElseGet( () -> { - BaseErrorCode errorCode = determineErrorCode(exception, GlobalErrorCode.INTERNAL_SERVER_ERROR); + BaseErrorCode errorCode = determineErrorCode(exception, AuthErrorCode.UNAUTHORIZED); log.debug(exception.getMessage(), exception); return new JwtException(errorCode); } diff --git a/src/main/java/clap/server/adapter/inbound/security/filter/JwtExceptionFilter.java b/src/main/java/clap/server/adapter/inbound/security/filter/JwtExceptionFilter.java index a75e430d..e3cd911b 100644 --- a/src/main/java/clap/server/adapter/inbound/security/filter/JwtExceptionFilter.java +++ b/src/main/java/clap/server/adapter/inbound/security/filter/JwtExceptionFilter.java @@ -33,7 +33,6 @@ protected void doFilterInternal( private void sendAuthError(HttpServletResponse response, JwtException e) throws IOException { if (!response.isCommitted()) { - response.setContentType("application/json;charset=UTF-8"); response.setStatus(e.getErrorCode().getHttpStatus().value()); response.getWriter().write(e.getErrorCode().getCustomCode()); } diff --git a/src/main/java/clap/server/adapter/inbound/security/LoginAttemptFilter.java b/src/main/java/clap/server/adapter/inbound/security/filter/LoginAttemptFilter.java similarity index 93% rename from src/main/java/clap/server/adapter/inbound/security/LoginAttemptFilter.java rename to src/main/java/clap/server/adapter/inbound/security/filter/LoginAttemptFilter.java index 33de02e5..f73c54c9 100644 --- a/src/main/java/clap/server/adapter/inbound/security/LoginAttemptFilter.java +++ b/src/main/java/clap/server/adapter/inbound/security/filter/LoginAttemptFilter.java @@ -1,4 +1,4 @@ -package clap.server.adapter.inbound.security; +package clap.server.adapter.inbound.security.filter; import clap.server.application.service.auth.LoginAttemptService; import clap.server.exception.AuthException; @@ -17,6 +17,7 @@ import java.io.IOException; import java.util.ArrayList; +import static clap.server.adapter.inbound.security.WebSecurityUrl.LOGIN_ENDPOINT; import static clap.server.common.constants.AuthConstants.SESSION_ID; @@ -24,13 +25,11 @@ @Slf4j public class LoginAttemptFilter extends OncePerRequestFilter { - private static final String LOGIN_ENDPOINT = "/api/auths/login"; private final LoginAttemptService loginAttemptService; @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - String sessionId = request.getHeader(SESSION_ID.getValue().toLowerCase()); if (request.getRequestURI().equals(LOGIN_ENDPOINT)) { diff --git a/src/main/java/clap/server/adapter/inbound/security/CustomGrantedAuthority.java b/src/main/java/clap/server/adapter/inbound/security/service/CustomGrantedAuthority.java similarity index 95% rename from src/main/java/clap/server/adapter/inbound/security/CustomGrantedAuthority.java rename to src/main/java/clap/server/adapter/inbound/security/service/CustomGrantedAuthority.java index 2339122e..ff3e1901 100644 --- a/src/main/java/clap/server/adapter/inbound/security/CustomGrantedAuthority.java +++ b/src/main/java/clap/server/adapter/inbound/security/service/CustomGrantedAuthority.java @@ -1,4 +1,4 @@ -package clap.server.adapter.inbound.security; +package clap.server.adapter.inbound.security.service; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; diff --git a/src/main/java/clap/server/adapter/inbound/security/SecurityUserDetails.java b/src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetails.java similarity index 97% rename from src/main/java/clap/server/adapter/inbound/security/SecurityUserDetails.java rename to src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetails.java index 8ac0f3a6..e58c2e2a 100644 --- a/src/main/java/clap/server/adapter/inbound/security/SecurityUserDetails.java +++ b/src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetails.java @@ -1,4 +1,4 @@ -package clap.server.adapter.inbound.security; +package clap.server.adapter.inbound.security.service; import clap.server.adapter.outbound.persistense.entity.member.MemberEntity; import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus; diff --git a/src/main/java/clap/server/adapter/inbound/security/SecurityUserDetailsService.java b/src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetailsService.java similarity index 94% rename from src/main/java/clap/server/adapter/inbound/security/SecurityUserDetailsService.java rename to src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetailsService.java index 57d8f5eb..a9e602f8 100644 --- a/src/main/java/clap/server/adapter/inbound/security/SecurityUserDetailsService.java +++ b/src/main/java/clap/server/adapter/inbound/security/service/SecurityUserDetailsService.java @@ -1,4 +1,4 @@ -package clap.server.adapter.inbound.security; +package clap.server.adapter.inbound.security.service; import clap.server.adapter.outbound.persistense.repository.member.MemberRepository; import clap.server.exception.AuthException; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/AddCategoryController.java b/src/main/java/clap/server/adapter/inbound/web/admin/AddCategoryController.java index d1ad5fd5..bed16e3f 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/AddCategoryController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/AddCategoryController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.admin.AddMainCategoryRequest; import clap.server.adapter.inbound.web.dto.admin.AddSubCategoryRequest; import clap.server.application.port.inbound.admin.AddMainCategoryUsecase; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/DeleteCategoryController.java b/src/main/java/clap/server/adapter/inbound/web/admin/DeleteCategoryController.java index e4c0c194..e377c7da 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/DeleteCategoryController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/DeleteCategoryController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.admin.DeleteCategoryUsecase; import clap.server.common.annotation.architecture.WebAdapter; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/ManageMemberController.java b/src/main/java/clap/server/adapter/inbound/web/admin/ManageMemberController.java index fa4a068f..e2147365 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/ManageMemberController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/ManageMemberController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.admin.UpdateMemberRequest; import clap.server.application.port.inbound.admin.UpdateMemberUsecase; import clap.server.common.annotation.architecture.WebAdapter; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/ManagementLabelController.java b/src/main/java/clap/server/adapter/inbound/web/admin/ManagementLabelController.java index 67108279..0a6451f8 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/ManagementLabelController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/ManagementLabelController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.label.request.CreateLabelRequest; import clap.server.adapter.inbound.web.dto.label.request.EditLabelRequest; import clap.server.application.port.inbound.label.AddLabelUsecase; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberController.java b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberController.java index 296c49f4..e04542d8 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.admin.RegisterMemberRequest; import clap.server.application.port.inbound.admin.RegisterMemberUsecase; import clap.server.common.annotation.architecture.WebAdapter; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java index 0a9b229b..dc06b605 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/RegisterMemberCsvController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.admin.RegisterMemberUsecase; import clap.server.common.annotation.architecture.WebAdapter; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/clap/server/adapter/inbound/web/admin/UpdateCategoryController.java b/src/main/java/clap/server/adapter/inbound/web/admin/UpdateCategoryController.java index 0f3d877a..c1e411d2 100644 --- a/src/main/java/clap/server/adapter/inbound/web/admin/UpdateCategoryController.java +++ b/src/main/java/clap/server/adapter/inbound/web/admin/UpdateCategoryController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.admin; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.admin.UpdateCategoryRequest; import clap.server.application.port.inbound.admin.UpdateCategoryUsecase; import clap.server.common.annotation.architecture.WebAdapter; diff --git a/src/main/java/clap/server/adapter/inbound/web/auth/AuthController.java b/src/main/java/clap/server/adapter/inbound/web/auth/AuthController.java index d4c3fe8e..549c193c 100644 --- a/src/main/java/clap/server/adapter/inbound/web/auth/AuthController.java +++ b/src/main/java/clap/server/adapter/inbound/web/auth/AuthController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.auth; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.auth.LoginRequest; import clap.server.adapter.inbound.web.dto.auth.LoginResponse; import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus; diff --git a/src/main/java/clap/server/adapter/inbound/web/history/CommandCommentController.java b/src/main/java/clap/server/adapter/inbound/web/history/CommandCommentController.java index 2e6f3e8e..d05c112a 100644 --- a/src/main/java/clap/server/adapter/inbound/web/history/CommandCommentController.java +++ b/src/main/java/clap/server/adapter/inbound/web/history/CommandCommentController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.history; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.history.EditCommentRequest; import clap.server.application.port.inbound.history.DeleteCommentUsecase; import clap.server.application.port.inbound.history.EditCommentUsecase; diff --git a/src/main/java/clap/server/adapter/inbound/web/history/FindTaskHistoryController.java b/src/main/java/clap/server/adapter/inbound/web/history/FindTaskHistoryController.java index 92811acd..b04ab665 100644 --- a/src/main/java/clap/server/adapter/inbound/web/history/FindTaskHistoryController.java +++ b/src/main/java/clap/server/adapter/inbound/web/history/FindTaskHistoryController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.history; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.history.response.FindTaskHistoryResponse; import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus; import clap.server.application.port.inbound.history.FindTaskHistoriesUsecase; diff --git a/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java b/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java index 42053a84..c57c1363 100644 --- a/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java +++ b/src/main/java/clap/server/adapter/inbound/web/history/PostCommentController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.history; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.history.CreateCommentRequest; import clap.server.application.port.inbound.history.SaveCommentAttachmentUsecase; import clap.server.application.port.inbound.history.SaveCommentUsecase; diff --git a/src/main/java/clap/server/adapter/inbound/web/label/FindLabelController.java b/src/main/java/clap/server/adapter/inbound/web/label/FindLabelController.java index d088a0f8..7ea56180 100644 --- a/src/main/java/clap/server/adapter/inbound/web/label/FindLabelController.java +++ b/src/main/java/clap/server/adapter/inbound/web/label/FindLabelController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.label; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.label.response.FindLabelListResponse; import clap.server.application.port.inbound.label.FindLabelListUsecase; import clap.server.common.annotation.architecture.WebAdapter; diff --git a/src/main/java/clap/server/adapter/inbound/web/log/LogController.java b/src/main/java/clap/server/adapter/inbound/web/log/LogController.java index 67f5cce5..63b2df25 100644 --- a/src/main/java/clap/server/adapter/inbound/web/log/LogController.java +++ b/src/main/java/clap/server/adapter/inbound/web/log/LogController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.log; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.common.PageResponse; import clap.server.adapter.inbound.web.dto.log.response.AnonymousLogResponse; import clap.server.adapter.inbound.web.dto.log.request.FilterLogRequest; diff --git a/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java b/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java index ab50c194..dbb02e8b 100644 --- a/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java +++ b/src/main/java/clap/server/adapter/inbound/web/member/MemberInfoController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.member; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.member.response.MemberDetailInfoResponse; import clap.server.adapter.inbound.web.dto.member.response.MemberProfileResponse; import clap.server.adapter.inbound.web.dto.member.request.UpdateMemberInfoRequest; diff --git a/src/main/java/clap/server/adapter/inbound/web/member/ResetPasswordController.java b/src/main/java/clap/server/adapter/inbound/web/member/ResetPasswordController.java index 871a717c..8713d54f 100644 --- a/src/main/java/clap/server/adapter/inbound/web/member/ResetPasswordController.java +++ b/src/main/java/clap/server/adapter/inbound/web/member/ResetPasswordController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.member; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.member.ResetInitialPasswordUsecase; import clap.server.application.port.inbound.member.ResetPasswordUsecase; import clap.server.application.port.inbound.member.VerifyPasswordUseCase; diff --git a/src/main/java/clap/server/adapter/inbound/web/notification/FindNotificationController.java b/src/main/java/clap/server/adapter/inbound/web/notification/FindNotificationController.java index 2901d43b..ccd1e32e 100644 --- a/src/main/java/clap/server/adapter/inbound/web/notification/FindNotificationController.java +++ b/src/main/java/clap/server/adapter/inbound/web/notification/FindNotificationController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.notification; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.common.SliceResponse; import clap.server.adapter.inbound.web.dto.notification.response.CountNotificationResponse; import clap.server.adapter.inbound.web.dto.notification.response.FindNotificationListResponse; diff --git a/src/main/java/clap/server/adapter/inbound/web/notification/ManagementNotificationController.java b/src/main/java/clap/server/adapter/inbound/web/notification/ManagementNotificationController.java index ac78c15f..4ff22dec 100644 --- a/src/main/java/clap/server/adapter/inbound/web/notification/ManagementNotificationController.java +++ b/src/main/java/clap/server/adapter/inbound/web/notification/ManagementNotificationController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.notification; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.notification.*; import clap.server.common.annotation.architecture.WebAdapter; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/clap/server/adapter/inbound/web/notification/SubscribeEmitterController.java b/src/main/java/clap/server/adapter/inbound/web/notification/SubscribeEmitterController.java index d2503ed7..d557a768 100644 --- a/src/main/java/clap/server/adapter/inbound/web/notification/SubscribeEmitterController.java +++ b/src/main/java/clap/server/adapter/inbound/web/notification/SubscribeEmitterController.java @@ -1,7 +1,7 @@ package clap.server.adapter.inbound.web.notification; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.notification.SubscribeSseUsecase; import clap.server.common.annotation.architecture.WebAdapter; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java index 6f1c348c..a3e9ffb6 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ChangeTaskController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.task.request.ApprovalTaskRequest; import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskLabelRequest; import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskProcessorRequest; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/FindApprovalTaskFormController.java b/src/main/java/clap/server/adapter/inbound/web/task/FindApprovalTaskFormController.java index 6f8cb89f..80073d07 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/FindApprovalTaskFormController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/FindApprovalTaskFormController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.task.response.FindApprovalFormResponse; import clap.server.application.port.inbound.task.ApprovalTaskUsecase; import clap.server.common.annotation.architecture.WebAdapter; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java index 370548a8..2ed66abf 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/FindTaskController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.common.PageResponse; import clap.server.adapter.inbound.web.dto.task.request.FilterTaskListRequest; import clap.server.adapter.inbound.web.dto.task.response.*; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java index 57814728..84cda3b0 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/ManagementTaskController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.task.request.CreateTaskRequest; import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskRequest; import clap.server.adapter.inbound.web.dto.task.response.CreateTaskResponse; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/TaskBoardController.java b/src/main/java/clap/server/adapter/inbound/web/task/TaskBoardController.java index 954fa0a5..7153ba95 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/TaskBoardController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/TaskBoardController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.inbound.web.dto.task.request.FilterTaskBoardRequest; import clap.server.adapter.inbound.web.dto.task.request.UpdateTaskOrderRequest; import clap.server.adapter.inbound.web.dto.task.response.TaskBoardResponse; diff --git a/src/main/java/clap/server/adapter/inbound/web/task/TerminateTaskController.java b/src/main/java/clap/server/adapter/inbound/web/task/TerminateTaskController.java index af0e8847..306478b2 100644 --- a/src/main/java/clap/server/adapter/inbound/web/task/TerminateTaskController.java +++ b/src/main/java/clap/server/adapter/inbound/web/task/TerminateTaskController.java @@ -1,6 +1,6 @@ package clap.server.adapter.inbound.web.task; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.application.port.inbound.task.TerminateTaskUsecase; import clap.server.common.annotation.architecture.WebAdapter; import io.swagger.v3.oas.annotations.Operation; diff --git a/src/main/java/clap/server/config/aop/LoggingAspect.java b/src/main/java/clap/server/config/aop/LoggingAspect.java index 7112b48a..b914c6c5 100644 --- a/src/main/java/clap/server/config/aop/LoggingAspect.java +++ b/src/main/java/clap/server/config/aop/LoggingAspect.java @@ -1,6 +1,6 @@ package clap.server.config.aop; -import clap.server.adapter.inbound.security.SecurityUserDetails; +import clap.server.adapter.inbound.security.service.SecurityUserDetails; import clap.server.adapter.outbound.persistense.entity.log.constant.LogStatus; import clap.server.application.port.inbound.log.CreateAnonymousLogsUsecase; diff --git a/src/main/java/clap/server/config/security/MethodSecurityConfig.java b/src/main/java/clap/server/config/security/MethodSecurityConfig.java index 1b3439a0..4bff1679 100644 --- a/src/main/java/clap/server/config/security/MethodSecurityConfig.java +++ b/src/main/java/clap/server/config/security/MethodSecurityConfig.java @@ -1,7 +1,6 @@ package clap.server.config.security; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; diff --git a/src/main/java/clap/server/config/security/SecurityAuthConfig.java b/src/main/java/clap/server/config/security/SecurityAuthConfig.java index f3a09d2a..fed628d7 100644 --- a/src/main/java/clap/server/config/security/SecurityAuthConfig.java +++ b/src/main/java/clap/server/config/security/SecurityAuthConfig.java @@ -2,7 +2,7 @@ import clap.server.adapter.inbound.security.handler.JwtAccessDeniedHandler; import clap.server.adapter.inbound.security.handler.JwtAuthenticationEntryPoint; -import clap.server.adapter.inbound.security.SecurityUserDetailsService; +import clap.server.adapter.inbound.security.service.SecurityUserDetailsService; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/clap/server/config/security/SecurityFilterConfig.java b/src/main/java/clap/server/config/security/SecurityFilterConfig.java index 89676838..b93176d3 100644 --- a/src/main/java/clap/server/config/security/SecurityFilterConfig.java +++ b/src/main/java/clap/server/config/security/SecurityFilterConfig.java @@ -1,6 +1,6 @@ package clap.server.config.security; -import clap.server.adapter.inbound.security.LoginAttemptFilter; +import clap.server.adapter.inbound.security.filter.LoginAttemptFilter; import clap.server.adapter.inbound.security.filter.JwtAuthenticationFilter; import clap.server.adapter.inbound.security.filter.JwtExceptionFilter; import clap.server.application.port.outbound.auth.ForbiddenTokenPort; diff --git a/src/main/java/clap/server/config/security/WebSecurityUrl.java b/src/main/java/clap/server/config/security/WebSecurityUrl.java deleted file mode 100644 index 37e58963..00000000 --- a/src/main/java/clap/server/config/security/WebSecurityUrl.java +++ /dev/null @@ -1,16 +0,0 @@ -package clap.server.config.security; - -public class WebSecurityUrl { - private WebSecurityUrl() { - throw new IllegalStateException("Utility class"); - } - - protected static final String [] HEALTH_CHECK_ENDPOINT = {"/health"}; - protected static final String[] READ_ONLY_PUBLIC_ENDPOINTS = {"/favicon.ico"}; - protected static final String LOGIN_ENDPOINT = "/api/auths/login"; - protected static final String[] SWAGGER_ENDPOINTS = { - "/swagger/api-docs/**", "/swagger/v3/api-docs/**", - "/swagger-ui/**", "/swagger" - }; - protected static final String[] REISSUANCE_ENDPOINTS = {"/api/auths/reissuance"}; -} diff --git a/src/main/java/clap/server/exception/ExceptionAdvice.java b/src/main/java/clap/server/exception/ExceptionAdvice.java index 47535bea..b94deb70 100644 --- a/src/main/java/clap/server/exception/ExceptionAdvice.java +++ b/src/main/java/clap/server/exception/ExceptionAdvice.java @@ -35,8 +35,9 @@ public ResponseEntity handleMethodArgumentNotValid( HttpStatusCode status, WebRequest request ) { - Map errors = new LinkedHashMap<>(); + log.error("Validation error occurred: {}", e.getMessage(), e); // 로그 추가 + Map errors = new LinkedHashMap<>(); e.getBindingResult() .getFieldErrors() .forEach(fieldError -> { @@ -49,7 +50,7 @@ public ResponseEntity handleMethodArgumentNotValid( return handleExceptionInternalArgs( e, HttpHeaders.EMPTY, - GlobalErrorCode.BAD_REQUEST, // GlobalErrorCode 사용 + GlobalErrorCode.INTERNAL_SERVER_ERROR, request, errors ); @@ -57,6 +58,8 @@ public ResponseEntity handleMethodArgumentNotValid( @ExceptionHandler public ResponseEntity validation(ConstraintViolationException e, WebRequest request) { + log.error("ConstraintViolationException occurred: {}", e.getMessage(), e); // 로그 추가 + String errorMessage = e.getConstraintViolations().stream() .map(ConstraintViolation::getMessage) .findFirst() @@ -64,7 +67,7 @@ public ResponseEntity validation(ConstraintViolationException e, WebRequ return handleExceptionInternalConstraint( e, - GlobalErrorCode.valueOf(errorMessage), // GlobalErrorCode 사용 + GlobalErrorCode.valueOf(errorMessage), HttpHeaders.EMPTY, request ); @@ -72,11 +75,11 @@ public ResponseEntity validation(ConstraintViolationException e, WebRequ @ExceptionHandler public ResponseEntity exception(Exception e, WebRequest request) { - e.printStackTrace(); + log.error("Unhandled exception occurred: {}", e.getMessage(), e); // 로그 추가 return handleExceptionInternalFalse( e, - GlobalErrorCode.INTERNAL_SERVER_ERROR, // GlobalErrorCode 사용 + GlobalErrorCode.INTERNAL_SERVER_ERROR, HttpHeaders.EMPTY, GlobalErrorCode.INTERNAL_SERVER_ERROR.getHttpStatus(), request, @@ -84,16 +87,6 @@ public ResponseEntity exception(Exception e, WebRequest request) { ); } - @ExceptionHandler(ApplicationException.class) - public ResponseEntity handleApplicationException(ApplicationException e, WebRequest request) { - // CSV 관련 에러 처리 유지 - if (e.getCode() == MemberErrorCode.CSV_PARSING_ERROR || e.getCode() == MemberErrorCode.INVALID_CSV_FORMAT) { - log.error("CSV Parsing Error: {}", e.getCode().getMessage()); - return buildErrorResponse(e.getCode()); - } - return buildErrorResponse(e.getCode()); - } - @ExceptionHandler(value = { BaseException.class }) public ResponseEntity onThrowException(BaseException exception, HttpServletRequest request) { BaseErrorCode baseErrorCode = exception.getCode(); @@ -184,12 +177,4 @@ public ResponseEntity handleAccessDeniedException(AccessDeniedException AuthErrorCode.FORBIDDEN.getMessage() ); } - - private ResponseEntity buildErrorResponse(BaseErrorCode errorCode) { - return ResponseEntity.status(errorCode.getHttpStatus()) - .body(Map.of( - "code", errorCode.getCustomCode(), - "message", errorCode.getMessage() - )); - } }