diff --git a/src/main/java/org/recordy/server/slack/domain/Slack.java b/src/main/java/org/recordy/server/slack/domain/Slack.java index 9b5c3cf9..b16f2305 100644 --- a/src/main/java/org/recordy/server/slack/domain/Slack.java +++ b/src/main/java/org/recordy/server/slack/domain/Slack.java @@ -22,7 +22,12 @@ public class Slack { ApprovalStatus approvalStatus; public Slack(HttpServletRequest request) { - JSONObject json = getJsonFrom(request); + String payload = (String) request.getAttribute("slackPayload"); + if (payload == null) { + throw new SlackException(ErrorMessage.SLACK_INTERACTION_FAILED); + } + + JSONObject json = new JSONObject(payload); JSONObject action = json.getJSONArray("actions").getJSONObject(0); JSONObject value = new JSONObject(action.getString("value")); diff --git a/src/main/java/org/recordy/server/slack/interceptor/SlackInterceptor.java b/src/main/java/org/recordy/server/slack/interceptor/SlackInterceptor.java index 1dd83619..e1bac303 100644 --- a/src/main/java/org/recordy/server/slack/interceptor/SlackInterceptor.java +++ b/src/main/java/org/recordy/server/slack/interceptor/SlackInterceptor.java @@ -26,7 +26,7 @@ public class SlackInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { - // ContentCachingRequestWrapper로 감싸기 + // SecurityContextHolderAwareRequestWrapper가 아닌 경우에만 ContentCachingRequestWrapper로 감쌈 ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request); String method = request.getMethod(); @@ -35,6 +35,7 @@ public boolean preHandle(HttpServletRequest request, HttpServletResponse respons String payload = getRequestBody(requestWrapper); System.out.println("payload = " + payload); + request.setAttribute("slackPayload", payload); if (!method.equalsIgnoreCase("POST") || !isValidRequest(payload, signature, timestamp)) { throw new SlackException(ErrorMessage.SLACK_INVALID_REQUEST); @@ -82,3 +83,4 @@ private boolean isValidRequest(String payload, String signature, String timestam } } +