Skip to content

Commit

Permalink
feat - #160 분리된 슬랙 메소드 적용
Browse files Browse the repository at this point in the history
  • Loading branch information
jumining committed Aug 20, 2024
1 parent 9c416cb commit 8b66186
Show file tree
Hide file tree
Showing 6 changed files with 17 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sopt.org.hmh.domain.slack;
package sopt.org.hmh.domain.slack.constant;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package sopt.org.hmh.domain.slack;
package sopt.org.hmh.domain.slack.constant;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import sopt.org.hmh.domain.auth.repository.OnboardingInfoRepository;
import sopt.org.hmh.domain.auth.repository.ProblemRepository;
import sopt.org.hmh.domain.slack.SlackSender;
import sopt.org.hmh.domain.slack.constant.SlackStatus;
import sopt.org.hmh.domain.slack.provider.SlackNewUserNotificationProvider;
import sopt.org.hmh.domain.user.domain.User;
import sopt.org.hmh.domain.user.domain.UserConstants;
import sopt.org.hmh.domain.user.domain.exception.UserError;
Expand All @@ -30,7 +32,7 @@ public class UserService {
private final UserRepository userRepository;
private final OnboardingInfoRepository onboardingInfoRepository;
private final ProblemRepository problemRepository;
private final SlackSender slackSender;
private final SlackNewUserNotificationProvider slackNewUserNotificationProvider;

@Transactional
public void withdraw(Long userId) {
Expand Down Expand Up @@ -67,7 +69,7 @@ public User addUser(SocialPlatform socialPlatform, String socialId, String name,
.name(validateName(name))
.build()
);
slackSender.sendNotificationNewUser(name, os);
slackNewUserNotificationProvider.sendNotification(name, os, SlackStatus.NEW_USER_SIGNUP);
return user;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
import java.io.PrintWriter;

import sopt.org.hmh.domain.slack.SlackSender;
import sopt.org.hmh.domain.slack.constant.SlackStatus;
import sopt.org.hmh.domain.slack.provider.SlackErrorNotificationProvider;
import sopt.org.hmh.global.auth.jwt.JwtConstants;
import sopt.org.hmh.global.auth.jwt.exception.JwtError;
import sopt.org.hmh.global.auth.jwt.exception.JwtException;
Expand All @@ -26,7 +28,7 @@
@Component
public class ExceptionHandlerFilter extends OncePerRequestFilter {
private final ObjectMapper objectMapper = new ObjectMapper();
private final SlackSender slackSender;
private final SlackErrorNotificationProvider slackErrorNotificationProvider;

@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws IOException {
Expand All @@ -48,7 +50,7 @@ private void handleUnauthorizedException(HttpServletResponse response, ErrorBase
private void handleException(HttpServletResponse response, HttpServletRequest request, Exception e) throws IOException {
log.error(">>> Exception Handler Filter : ", e);
setResponse(response, HttpStatus.INTERNAL_SERVER_ERROR, JwtError.INTERNAL_SERVER_ERROR);
slackSender.sendNotificationServerInternalError(e, request);
slackErrorNotificationProvider.sendNotification(SlackStatus.INTERNAL_ERROR, e, request);
}

private void setResponse(HttpServletResponse response, HttpStatus httpStatus, ErrorBase errorMessage) throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,22 +7,21 @@
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import sopt.org.hmh.domain.slack.SlackSender;
import sopt.org.hmh.domain.slack.constant.SlackStatus;
import sopt.org.hmh.domain.slack.provider.SlackErrorNotificationProvider;
import sopt.org.hmh.global.common.exception.base.ErrorBase;
import sopt.org.hmh.global.common.exception.base.ExceptionBase;
import sopt.org.hmh.global.common.response.BaseResponse;

import java.util.Objects;

@ControllerAdvice
@RequiredArgsConstructor
public class CommonControllerAdvice {

private final SlackSender slackSender;
private final SlackErrorNotificationProvider slackErrorNotificationProvider;

@ExceptionHandler(value = ExceptionBase.class)
public ResponseEntity<?> exceptionHandler(HttpServletRequest request, HttpServletResponse response, ExceptionBase exception) {
if (!Objects.equals(request.getRemoteAddr(), "0:0:0:0:0:0:0:1")) // 로컬에서 오류 발생 시 전송 X
slackSender.sendNotificationServerRuntimeException(exception, request);
slackErrorNotificationProvider.sendNotification(SlackStatus.CLIENT_ERROR, exception, request);

ErrorBase error = exception.getError();
response.setStatus(error.getHttpStatusCode());
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/sopt/org/hmh/global/config/SecurityConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.web.SecurityFilterChain;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import sopt.org.hmh.domain.slack.SlackSender;
import sopt.org.hmh.domain.slack.provider.SlackErrorNotificationProvider;
import sopt.org.hmh.global.auth.jwt.service.JwtProvider;
import sopt.org.hmh.global.auth.jwt.service.JwtValidator;
import sopt.org.hmh.global.auth.security.JwtAuthenticationEntryPoint;
Expand All @@ -25,7 +25,7 @@ public class SecurityConfig {
private final JwtValidator jwtValidator;
private final JwtProvider jwtProvider;
private final JwtAuthenticationEntryPoint customJwtAuthenticationEntryPoint;
private final SlackSender slackSender;
private final SlackErrorNotificationProvider slackErrorNotificationProvider;

private static final String[] AUTH_WHITELIST = {
// Global
Expand Down Expand Up @@ -63,7 +63,7 @@ public SecurityFilterChain filterChain(HttpSecurity httpSecurity) throws Excepti
authorizationManagerRequestMatcherRegistry
.anyRequest().authenticated())
.addFilterBefore(new JwtAuthenticationFilter(jwtValidator, jwtProvider), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(new ExceptionHandlerFilter(slackSender), JwtAuthenticationFilter.class)
.addFilterBefore(new ExceptionHandlerFilter(slackErrorNotificationProvider), JwtAuthenticationFilter.class)
.build();
}

Expand Down

0 comments on commit 8b66186

Please sign in to comment.