From 2458ceaf016dba717d405827d293e04edb447367 Mon Sep 17 00:00:00 2001 From: elive7 Date: Tue, 17 Dec 2024 23:26:45 +0900 Subject: [PATCH] =?UTF-8?q?[hotfix]=20fix:=20Slack=20=EB=82=B4=EC=97=90=20?= =?UTF-8?q?json=20=EB=B3=80=ED=99=98=20=EB=A1=9C=EC=A7=81=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/slack/controller/SlackController.java | 3 +++ .../java/org/recordy/server/slack/domain/Slack.java | 11 +++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/recordy/server/slack/controller/SlackController.java b/src/main/java/org/recordy/server/slack/controller/SlackController.java index 03515cca..bc438465 100644 --- a/src/main/java/org/recordy/server/slack/controller/SlackController.java +++ b/src/main/java/org/recordy/server/slack/controller/SlackController.java @@ -30,6 +30,9 @@ public ResponseEntity handleInteractiveMessage(HttpServletRequest request) String actionId = slack.getActionId(); if (actionId.contains("report")) { + if (slack.getApprovalStatus() == null || slack.getReportId() == null || slack.getThreadTimestamp() == null) { + throw new SlackException(ErrorMessage.SLACK_INTERACTION_FAILED); + } reportService.resolve(slack.getReportId(), slack.getApprovalStatus(), slack.getThreadTimestamp()); } 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 7b1c3119..5a45f12a 100644 --- a/src/main/java/org/recordy/server/slack/domain/Slack.java +++ b/src/main/java/org/recordy/server/slack/domain/Slack.java @@ -24,16 +24,19 @@ public Slack(HttpServletRequest request) { String encodedPayload = (String) request.getAttribute("slackPayload"); System.out.println("Encoded Slack payload = " + encodedPayload); - if (encodedPayload == null) { + if (encodedPayload == null || encodedPayload.isBlank()) { throw new SlackException(ErrorMessage.SLACK_INTERACTION_FAILED); } // URL 디코딩 - String payload = URLDecoder.decode(encodedPayload, StandardCharsets.UTF_8); - System.out.println("Decoded Slack payload = " + payload); + String decodedPayload = URLDecoder.decode(encodedPayload, StandardCharsets.UTF_8); + System.out.println("Decoded Slack payload = " + decodedPayload); + + // "payload=" 제거 + String jsonPayload = decodedPayload.substring(8); // "payload=" 이후의 값 추출 // JSON 파싱 - JSONObject json = new JSONObject(payload); + JSONObject json = new JSONObject(jsonPayload); JSONObject action = json.getJSONArray("actions").getJSONObject(0); JSONObject value = new JSONObject(action.getString("value"));