From ec5621835bdf1c39942d240fbf2e0e5d1aaca6cf Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Mon, 15 Sep 2025 17:46:43 +0900 Subject: [PATCH 1/7] =?UTF-8?q?chore:=20asg=EC=9A=A9=20github-actions=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/github-actions.yml | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index b2743203..4e1719e2 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -1,8 +1,8 @@ -name: CI/CD with Docker +name: CI/CD with Docker & ASG on: push: - branches: [ "deploy" ] + branches: [ "stage" ] jobs: deploy: @@ -50,16 +50,16 @@ jobs: push: true tags: ${{ secrets.DOCKER_REPO }}:latest - - name: Deploy to Server - uses: appleboy/ssh-action@master + - name: AWS credentials + uses: aws-actions/configure-aws-credentials@v2 with: - host: ${{ secrets.HOST }} - username: ${{ secrets.USERNAME }} - key: ${{ secrets.KEY }} - envs: GITHUB_SHA - script: | - echo "${{ secrets.DOCKER_COMPOSE }}" | sudo tee ./docker-compose.yml - sudo docker ps -q | xargs -r sudo docker stop && sudo docker ps -aq | xargs -r sudo docker rm - sudo docker compose -f ./docker-compose.yml down --rmi all - sudo docker pull ${{ secrets.DOCKER_REPO}}:latest - sudo docker compose -f ./docker-compose.yml up -d + aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }} + aws-region: ap-northeast-2 + + - name: Auto Scaling Group Refresh + run: | + aws autoscaling start-instance-refresh \ + --auto-scaling-group-name onlyone-buddkit-back-asg \ + --strategy "Rolling" \ + --preferences "MinHealthyPercentage=50" \ No newline at end of file From a743dfa354bb6d5ca0909b8a89e87f2c7582f374 Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Tue, 16 Sep 2025 17:43:45 +0900 Subject: [PATCH 2/7] =?UTF-8?q?style:=20=EB=B0=B1=EC=97=94=EB=93=9C=20API?= =?UTF-8?q?=20URI=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/chat/controller/ChatRoomRestController.java | 2 +- .../domain/chat/controller/MessageRestController.java | 2 +- .../onlyone/domain/club/controller/ClubController.java | 2 +- .../onlyone/domain/feed/controller/FeedController.java | 2 +- .../onlyone/domain/feed/controller/FeedMainController.java | 2 +- .../onlyone/domain/image/controller/ImageController.java | 2 +- .../notification/controller/NotificationController.java | 2 +- .../domain/payment/controller/PaymentController.java | 2 +- .../domain/schedule/controller/ScheduleController.java | 2 +- .../onlyone/domain/search/controller/SearchController.java | 2 +- .../domain/settlement/controller/SettlementController.java | 2 +- .../onlyone/domain/user/controller/AuthController.java | 2 +- .../onlyone/domain/user/controller/UserController.java | 2 +- .../onlyone/domain/wallet/controller/WalletController.java | 2 +- .../java/com/example/onlyone/global/config/RedisConfig.java | 6 ++++-- .../com/example/onlyone/global/config/SecurityConfig.java | 1 + 16 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/example/onlyone/domain/chat/controller/ChatRoomRestController.java b/src/main/java/com/example/onlyone/domain/chat/controller/ChatRoomRestController.java index 6781da7d..dcefafc8 100644 --- a/src/main/java/com/example/onlyone/domain/chat/controller/ChatRoomRestController.java +++ b/src/main/java/com/example/onlyone/domain/chat/controller/ChatRoomRestController.java @@ -12,7 +12,7 @@ @RestController @RequiredArgsConstructor -@RequestMapping("/clubs/{clubId}/chat") +@RequestMapping("/api/clubs/{clubId}/chat") public class ChatRoomRestController { private final ChatRoomService chatRoomService; diff --git a/src/main/java/com/example/onlyone/domain/chat/controller/MessageRestController.java b/src/main/java/com/example/onlyone/domain/chat/controller/MessageRestController.java index b8fd4f21..ec777b3a 100644 --- a/src/main/java/com/example/onlyone/domain/chat/controller/MessageRestController.java +++ b/src/main/java/com/example/onlyone/domain/chat/controller/MessageRestController.java @@ -18,7 +18,7 @@ @RestController @RequiredArgsConstructor -@RequestMapping("/chat") +@RequestMapping("/api/chat") public class MessageRestController { private final MessageService messageService; diff --git a/src/main/java/com/example/onlyone/domain/club/controller/ClubController.java b/src/main/java/com/example/onlyone/domain/club/controller/ClubController.java index a0b9c2dc..35d5b918 100644 --- a/src/main/java/com/example/onlyone/domain/club/controller/ClubController.java +++ b/src/main/java/com/example/onlyone/domain/club/controller/ClubController.java @@ -17,7 +17,7 @@ @RestController @Tag(name = "Club") @RequiredArgsConstructor -@RequestMapping("/clubs") +@RequestMapping("/api/clubs") public class ClubController { private final ClubService clubService; diff --git a/src/main/java/com/example/onlyone/domain/feed/controller/FeedController.java b/src/main/java/com/example/onlyone/domain/feed/controller/FeedController.java index c2eaa2b1..94f67f2a 100644 --- a/src/main/java/com/example/onlyone/domain/feed/controller/FeedController.java +++ b/src/main/java/com/example/onlyone/domain/feed/controller/FeedController.java @@ -23,7 +23,7 @@ @RestController @Tag(name = "feed") @RequiredArgsConstructor -@RequestMapping("/clubs/{clubId}/feeds") +@RequestMapping("/api/clubs/{clubId}/feeds") public class FeedController { private final FeedService feedService; diff --git a/src/main/java/com/example/onlyone/domain/feed/controller/FeedMainController.java b/src/main/java/com/example/onlyone/domain/feed/controller/FeedMainController.java index 0fa542a2..1e720d75 100644 --- a/src/main/java/com/example/onlyone/domain/feed/controller/FeedMainController.java +++ b/src/main/java/com/example/onlyone/domain/feed/controller/FeedMainController.java @@ -25,7 +25,7 @@ @Tag(name = "feed-main", description = "전체 피드 조회 API") @RestController @RequiredArgsConstructor -@RequestMapping("/feeds") +@RequestMapping("/api/feeds") public class FeedMainController { private final FeedMainService feedMainService; diff --git a/src/main/java/com/example/onlyone/domain/image/controller/ImageController.java b/src/main/java/com/example/onlyone/domain/image/controller/ImageController.java index e9fbc4e2..2e0d3b1b 100644 --- a/src/main/java/com/example/onlyone/domain/image/controller/ImageController.java +++ b/src/main/java/com/example/onlyone/domain/image/controller/ImageController.java @@ -20,7 +20,7 @@ public class ImageController { private final ImageService imageService; @Operation(summary = "Presigned URL 생성", description = "S3에 이미지 업로드를 위한 Presigned URL을 생성합니다.") - @PostMapping("/{imageFolderType}/presigned-url") + @PostMapping("/api/{imageFolderType}/presigned-url") public ResponseEntity> generatePresignedUrl( @PathVariable String imageFolderType, @Valid @RequestBody PresignedUrlRequestDto request) { diff --git a/src/main/java/com/example/onlyone/domain/notification/controller/NotificationController.java b/src/main/java/com/example/onlyone/domain/notification/controller/NotificationController.java index 9174af5f..fd9406e9 100644 --- a/src/main/java/com/example/onlyone/domain/notification/controller/NotificationController.java +++ b/src/main/java/com/example/onlyone/domain/notification/controller/NotificationController.java @@ -17,7 +17,7 @@ @Tag(name = "알림", description = "알림 관리 API") @RestController -@RequestMapping("/notifications") +@RequestMapping("/api/notifications") @RequiredArgsConstructor @Slf4j public class NotificationController { diff --git a/src/main/java/com/example/onlyone/domain/payment/controller/PaymentController.java b/src/main/java/com/example/onlyone/domain/payment/controller/PaymentController.java index 57e113b3..56e19da2 100644 --- a/src/main/java/com/example/onlyone/domain/payment/controller/PaymentController.java +++ b/src/main/java/com/example/onlyone/domain/payment/controller/PaymentController.java @@ -19,7 +19,7 @@ @RestController @Tag(name = "Payment") @RequiredArgsConstructor -@RequestMapping("/payments") +@RequestMapping("/api/payments") public class PaymentController { private final PaymentService paymentService; diff --git a/src/main/java/com/example/onlyone/domain/schedule/controller/ScheduleController.java b/src/main/java/com/example/onlyone/domain/schedule/controller/ScheduleController.java index 5903f4aa..0f929674 100644 --- a/src/main/java/com/example/onlyone/domain/schedule/controller/ScheduleController.java +++ b/src/main/java/com/example/onlyone/domain/schedule/controller/ScheduleController.java @@ -19,7 +19,7 @@ @RestController @Tag(name = "Schedule") @RequiredArgsConstructor -@RequestMapping("/clubs/{clubId}/schedules") +@RequestMapping("/api/clubs/{clubId}/schedules") public class ScheduleController { private final ScheduleService scheduleService; diff --git a/src/main/java/com/example/onlyone/domain/search/controller/SearchController.java b/src/main/java/com/example/onlyone/domain/search/controller/SearchController.java index ba045865..7d6227fb 100644 --- a/src/main/java/com/example/onlyone/domain/search/controller/SearchController.java +++ b/src/main/java/com/example/onlyone/domain/search/controller/SearchController.java @@ -13,7 +13,7 @@ @RestController @Tag(name = "Search") @RequiredArgsConstructor -@RequestMapping("/search") +@RequestMapping("/api/search") public class SearchController { private final SearchService searchService; diff --git a/src/main/java/com/example/onlyone/domain/settlement/controller/SettlementController.java b/src/main/java/com/example/onlyone/domain/settlement/controller/SettlementController.java index ff4f5746..a73cff0b 100644 --- a/src/main/java/com/example/onlyone/domain/settlement/controller/SettlementController.java +++ b/src/main/java/com/example/onlyone/domain/settlement/controller/SettlementController.java @@ -17,7 +17,7 @@ @RestController @Tag(name = "Settlement") @RequiredArgsConstructor -@RequestMapping("/clubs/{clubId}/schedules/{scheduleId}/settlements") +@RequestMapping("/api/clubs/{clubId}/schedules/{scheduleId}/settlements") public class SettlementController { private final SettlementService settlementService; diff --git a/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java b/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java index 01e5df4a..c143185e 100644 --- a/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java +++ b/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java @@ -22,7 +22,7 @@ @Log4j2 @RestController -@RequestMapping("/auth") +@RequestMapping("/api/auth") @RequiredArgsConstructor public class AuthController { private final KakaoService kakaoService; diff --git a/src/main/java/com/example/onlyone/domain/user/controller/UserController.java b/src/main/java/com/example/onlyone/domain/user/controller/UserController.java index cb36a8e0..d30189df 100644 --- a/src/main/java/com/example/onlyone/domain/user/controller/UserController.java +++ b/src/main/java/com/example/onlyone/domain/user/controller/UserController.java @@ -25,7 +25,7 @@ */ @Tag(name = "사용자", description = "사용자 정보 및 설정 관리 API") @RestController -@RequestMapping("/users") +@RequestMapping("/api/users") @RequiredArgsConstructor @Slf4j public class UserController { diff --git a/src/main/java/com/example/onlyone/domain/wallet/controller/WalletController.java b/src/main/java/com/example/onlyone/domain/wallet/controller/WalletController.java index 5fe27038..34fc0b3f 100644 --- a/src/main/java/com/example/onlyone/domain/wallet/controller/WalletController.java +++ b/src/main/java/com/example/onlyone/domain/wallet/controller/WalletController.java @@ -17,7 +17,7 @@ @RestController @Tag(name = "Wallet") @RequiredArgsConstructor -@RequestMapping("/users/wallet") +@RequestMapping("/api/users/wallet") public class WalletController { private final WalletService walletService; diff --git a/src/main/java/com/example/onlyone/global/config/RedisConfig.java b/src/main/java/com/example/onlyone/global/config/RedisConfig.java index 257255a8..b307df39 100644 --- a/src/main/java/com/example/onlyone/global/config/RedisConfig.java +++ b/src/main/java/com/example/onlyone/global/config/RedisConfig.java @@ -19,13 +19,15 @@ public class RedisConfig { private String host; @Value("${spring.data.redis.port}") private int port; - @Value("${spring.data.redis.password}") + @Value("${spring.data.redis.password:}") private String password; @Bean public RedisConnectionFactory redisConnectionFactory() { LettuceConnectionFactory factory = new LettuceConnectionFactory(host, port); - factory.setPassword(password); + if (password != null && !password.isBlank()) { + factory.setPassword(password); + } return factory; } diff --git a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java index 7610e2b9..af96300e 100644 --- a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java +++ b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java @@ -73,6 +73,7 @@ public WebSecurityCustomizer webSecurityCustomizer() { public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); configuration.setAllowedOriginPatterns(List.of( + "https://buddkit.com", "http://localhost:8080", "http://localhost:5173", "https://only-one-front-delta.vercel.app", From 2fbbb9422d9baa9b784921d846ed1e15af2edd0c Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Tue, 16 Sep 2025 17:45:43 +0900 Subject: [PATCH 3/7] =?UTF-8?q?refactor:=20github-actions.yml=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/github-actions.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/github-actions.yml b/.github/workflows/github-actions.yml index 4e1719e2..a886cb6d 100644 --- a/.github/workflows/github-actions.yml +++ b/.github/workflows/github-actions.yml @@ -20,7 +20,7 @@ jobs: run: | mkdir -p ./src/main/resources/firebase touch ./src/main/resources/application.yml - echo "${{ secrets.APPLICATION }}" > ./src/main/resources/application.yml + echo "${{ secrets.APPLICATION_STAGE }}" > ./src/main/resources/application.yml - name: create-json uses: jsdaniell/create-json@v1.2.2 From 3209eb3354eb8687bc725ae0d5104c74efe1abce Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Wed, 17 Sep 2025 16:16:46 +0900 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20AUTH=5FWHITELIST=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 --- .../onlyone/global/config/SecurityConfig.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java index af96300e..b90ba427 100644 --- a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java +++ b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java @@ -52,20 +52,20 @@ public WebSecurityCustomizer webSecurityCustomizer() { } private static final String[] AUTH_WHITELIST = { - "/signup/**", - "/login/**", - "/token", - "/center", - "/email/**", - "/ws/**", // WebSocket STOMP 엔드포인트 허용 - "/ws/chat/**", // SockJS는 /info, /websocket, /xhr 등 내부 경로 씀 + "**/signup/**", + "**/login/**", + "**/token", + "**/center", + "**/email/**", + "**/ws/**", // WebSocket STOMP 엔드포인트 허용 + "**/ws/chat/**", // SockJS는 /info, /websocket, /xhr 등 내부 경로 씀 // "/sse/subscribe/**", // SSE는 별도 필터에서 인증 처리 - "/ws-native", - "/kakao/**", - "/auth/**", - "/grafana/**", // Grafana 대시보드 - "/influxdb/**", // InfluxDB API - "/write", // InfluxDB write + "**/ws-native", + "**/kakao/**", + "**/auth/**", + "**/grafana/**", // Grafana 대시보드 + "**/influxdb/**", // InfluxDB API + "**/write", // InfluxDB write }; // CORS 설정 From 6af25bb1db47800aa8e8bd6da74c3ca7f52b7b5f Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Wed, 17 Sep 2025 16:32:21 +0900 Subject: [PATCH 5/7] =?UTF-8?q?refactor:=20AUTH=5FWHITELIST=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 --- .../onlyone/global/config/SecurityConfig.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java index b90ba427..f8e94b32 100644 --- a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java +++ b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java @@ -52,20 +52,20 @@ public WebSecurityCustomizer webSecurityCustomizer() { } private static final String[] AUTH_WHITELIST = { - "**/signup/**", - "**/login/**", - "**/token", - "**/center", - "**/email/**", - "**/ws/**", // WebSocket STOMP 엔드포인트 허용 - "**/ws/chat/**", // SockJS는 /info, /websocket, /xhr 등 내부 경로 씀 + "/api/signup/**", + "/api//login/**", + "/api/token", + "/api/center", + "/api/email/**", + "/ws/**", // WebSocket STOMP 엔드포인트 허용 + "/ws/chat/**", // SockJS는 /info, /websocket, /xhr 등 내부 경로 씀 // "/sse/subscribe/**", // SSE는 별도 필터에서 인증 처리 - "**/ws-native", - "**/kakao/**", - "**/auth/**", - "**/grafana/**", // Grafana 대시보드 - "**/influxdb/**", // InfluxDB API - "**/write", // InfluxDB write + "/ws-native", + "/api/kakao/**", + "/api/auth/**", + "/grafana/**", // Grafana 대시보드 + "/influxdb/**", // InfluxDB API + "/write", // InfluxDB write }; // CORS 설정 From 8b0f087d56f98eec7d06b8a8d4f48946a0cb538a Mon Sep 17 00:00:00 2001 From: Hayoung Moon <124586544+gkdudans@users.noreply.github.com> Date: Wed, 17 Sep 2025 17:46:23 +0900 Subject: [PATCH 6/7] =?UTF-8?q?refactor:=20AUTH=5FWHITELIST=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 --- .../domain/user/controller/AuthController.java | 18 ++++++++++++++---- .../onlyone/global/config/SecurityConfig.java | 3 ++- .../global/filter/JwtAuthenticationFilter.java | 1 + 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java b/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java index c143185e..a62494c1 100644 --- a/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java +++ b/src/main/java/com/example/onlyone/domain/user/controller/AuthController.java @@ -31,22 +31,29 @@ public class AuthController { @PostMapping("/kakao/callback") public ResponseEntity kakaoLogin(@RequestParam String code) { + log.error("🔍 [DEBUG] kakaoLogin 시작 - code={}", code); + try { // 1. 인증 코드로 카카오 액세스 토큰 받기 String kakaoAccessToken = kakaoService.getAccessToken(code); + log.error("✅ [DEBUG] kakaoAccessToken={}", kakaoAccessToken); // 2. 카카오 액세스 토큰으로 사용자 정보 받기 Map kakaoUserInfo = kakaoService.getUserInfo(kakaoAccessToken); + log.error("✅ [DEBUG] kakaoUserInfo={}", kakaoUserInfo); // 3. 사용자 정보 저장 또는 업데이트 Map loginResult = userService.processKakaoLogin(kakaoUserInfo, kakaoAccessToken); User user = (User) loginResult.get("user"); boolean isNewUser = (boolean) loginResult.get("isNewUser"); + log.error("✅ [DEBUG] userId={}, isNewUser={}", user.getUserId(), isNewUser); // 4. JWT 토큰 생성 (Access + Refresh) Map tokens = userService.generateTokenPair(user); + log.error("✅ [DEBUG] tokens 생성됨 - accessToken={}, refreshToken={}", + tokens.get("accessToken"), tokens.get("refreshToken")); - // 5. refreshToken Redis에 저장 (VITE_API_BASE_URL local 시, 주석) + // 5. refreshToken Redis에 저장 (local dev 시 주석 처리 가능) // redisTemplate.opsForValue() // .set(user.getUserId().toString(), tokens.get("refreshToken"), Duration.ofMillis(REFRESH_TOKEN_EXPIRE_TIME)); @@ -57,12 +64,15 @@ public ResponseEntity kakaoLogin(@RequestParam String code) { isNewUser ); + log.error("✅ [DEBUG] 로그인 성공 - userId={}", user.getUserId()); return ResponseEntity.ok(CommonResponse.success(response)); + } catch (CustomException e) { - // CustomException은 그대로 재던지기 (탈퇴한 사용자 403 에러 포함) - throw e; + log.error("❌ [DEBUG] CustomException 발생 - code={}, message={}", + e.getErrorCode(), e.getMessage(), e); + throw e; // CustomException은 그대로 재던지기 } catch (Exception e) { - // 기타 예외는 502 에러로 처리 + log.error("❌ [DEBUG] Exception 발생 - message={}", e.getMessage(), e); throw new CustomException(ErrorCode.KAKAO_LOGIN_FAILED); } } diff --git a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java index f8e94b32..58ee85f1 100644 --- a/src/main/java/com/example/onlyone/global/config/SecurityConfig.java +++ b/src/main/java/com/example/onlyone/global/config/SecurityConfig.java @@ -52,8 +52,9 @@ public WebSecurityCustomizer webSecurityCustomizer() { } private static final String[] AUTH_WHITELIST = { + "/api/auth/kakao/callback/**", "/api/signup/**", - "/api//login/**", + "/api/login/**", "/api/token", "/api/center", "/api/email/**", diff --git a/src/main/java/com/example/onlyone/global/filter/JwtAuthenticationFilter.java b/src/main/java/com/example/onlyone/global/filter/JwtAuthenticationFilter.java index 0ad1f554..d2a4fab9 100644 --- a/src/main/java/com/example/onlyone/global/filter/JwtAuthenticationFilter.java +++ b/src/main/java/com/example/onlyone/global/filter/JwtAuthenticationFilter.java @@ -61,6 +61,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse // 사용자 상태 확인 - 탈퇴한 사용자인 경우 인증 거부, GUEST와 ACTIVE는 허용 Optional userOpt = userRepository.findByKakaoId(kakaoId); + log.error("userOpt = {}", userOpt.orElse(null)); if (userOpt.isPresent()) { User user = userOpt.get(); From 18f8e3d40da24dc8bfa85752232cc9a4d925e18c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=99=A9=EC=9D=B8=EC=B0=AC?= Date: Thu, 18 Sep 2025 13:35:00 +0900 Subject: [PATCH 7/7] fix: kakaoId -> userId --- .../domain/chat/controller/ChatWebSocketController.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/example/onlyone/domain/chat/controller/ChatWebSocketController.java b/src/main/java/com/example/onlyone/domain/chat/controller/ChatWebSocketController.java index b6b8a725..e468bcae 100644 --- a/src/main/java/com/example/onlyone/domain/chat/controller/ChatWebSocketController.java +++ b/src/main/java/com/example/onlyone/domain/chat/controller/ChatWebSocketController.java @@ -30,19 +30,19 @@ public void sendMessage( @DestinationVariable Long chatRoomId, @Payload ChatMessageRequest request) { - log.info("🔥 WebSocket 메시지 수신: userId={}, text={}", request.getUserId(), request.getText()); + log.error("🔥 WebSocket 메시지 수신: userId={}, text={}", request.getUserId(), request.getText()); try { // 1. 메시지 저장 ChatMessageResponse response = messageService.saveMessage(chatRoomId, request.getUserId(), request.getText()); - log.info("✅ 메시지 저장 완료, 전송 준비: {}", response.getText()); + log.error("✅ 메시지 저장 완료, 전송 준비: {}", response.getText()); // 2. 대상 경로 구성 및 전송 String destination = "/sub/chat/" + chatRoomId + "/messages"; messagingTemplate.convertAndSend(destination, response); } catch (CustomException e) { - log.error("❌ CustomException: {}", e.getMessage()); + log.error("❌ CustomException: {}", e); throw e; // -> @MessageExceptionHandler 로 위임 } catch (Exception e) { log.error("❌ 처리 중 알 수 없는 예외 발생: {}", e.getMessage(), e);