Skip to content

Commit 92c8d1f

Browse files
committed
fix: Stomp 컨트롤러 수정
1 parent f5e084b commit 92c8d1f

File tree

7 files changed

+49
-52
lines changed

7 files changed

+49
-52
lines changed

src/main/java/com/oronaminc/join/answer/dto/AnswerRequest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import jakarta.validation.constraints.NotBlank;
5+
import jakarta.validation.constraints.NotNull;
56
import jakarta.validation.constraints.Size;
67

78
@Schema(description = "답변 생성/수정 요청 DTO")
89
public record AnswerRequest(
910
@NotBlank(message = "답변 내용을 입력해주시기 바랍니다.")
1011
@Size(max = 300, message = "답변 내용은 최대 300자까지 입력할 수 있습니다.")
1112
@Schema(description = "답변 내용", example = "답변입니다.")
12-
String content
13+
String content,
14+
@NotNull
15+
Long memberId
1316
) {
1417

1518
}

src/main/java/com/oronaminc/join/emoji/dto/EmojiRequest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ public record EmojiRequest(
1111
TargetType targetType,
1212
@NotNull
1313
@Schema(description = "공감 대상 ID", example = "1")
14-
Long targetId
14+
Long targetId,
15+
@NotNull
16+
Long memberId
1517
) {
1618

1719
}

src/main/java/com/oronaminc/join/websocket/api/AnswerWebsocketController.java

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
package com.oronaminc.join.websocket.api;
22

3-
import static com.oronaminc.join.global.exception.ErrorCode.TOO_MANY_REQUESTS_ANSWER;
4-
import static com.oronaminc.join.global.exception.ErrorCode.UNAUTHORIZED_MEMBER;
3+
import static com.oronaminc.join.global.exception.ErrorCode.*;
4+
5+
import org.springframework.messaging.handler.annotation.DestinationVariable;
6+
import org.springframework.messaging.handler.annotation.MessageMapping;
7+
import org.springframework.messaging.handler.annotation.Payload;
8+
import org.springframework.messaging.handler.annotation.SendTo;
9+
import org.springframework.stereotype.Controller;
510

611
import com.oronaminc.join.answer.domain.Answer;
712
import com.oronaminc.join.answer.dto.AnswerCreateResponse;
@@ -11,19 +16,14 @@
1116
import com.oronaminc.join.answer.mapper.AnswerMapper;
1217
import com.oronaminc.join.answer.service.AnswerService;
1318
import com.oronaminc.join.global.exception.ErrorException;
14-
import com.oronaminc.join.websocket.common.EventType;
1519
import com.oronaminc.join.global.ratelimit.RateLimitService;
1620
import com.oronaminc.join.global.ratelimit.RateLimitType;
21+
import com.oronaminc.join.websocket.common.EventType;
22+
1723
import io.github.bucket4j.Bucket;
1824
import jakarta.validation.Valid;
19-
import java.security.Principal;
2025
import lombok.RequiredArgsConstructor;
2126
import lombok.extern.slf4j.Slf4j;
22-
import org.springframework.messaging.handler.annotation.DestinationVariable;
23-
import org.springframework.messaging.handler.annotation.MessageMapping;
24-
import org.springframework.messaging.handler.annotation.Payload;
25-
import org.springframework.messaging.handler.annotation.SendTo;
26-
import org.springframework.stereotype.Controller;
2727

2828
@Slf4j
2929
@Controller
@@ -38,10 +38,9 @@ public class AnswerWebsocketController {
3838
public AnswerCreateResponse create(
3939
@DestinationVariable Long roomId,
4040
@DestinationVariable Long questionId,
41-
@Payload @Valid AnswerRequest request,
42-
Principal principal
41+
@Payload @Valid AnswerRequest request
4342
) {
44-
Long memberId = getMemberId(principal);
43+
Long memberId = request.memberId();
4544

4645
Bucket bucket = rateLimitService.getBucket(RateLimitType.CREATE_ANSWER, roomId, memberId, questionId);
4746

@@ -60,11 +59,10 @@ public AnswerCreateResponse create(
6059
@SendTo("/topic/rooms/{roomId}/answers")
6160
public AnswerUpdateResponse update(
6261
@DestinationVariable Long answerId,
63-
@Payload @Valid AnswerRequest request,
64-
Principal principal
62+
@Payload @Valid AnswerRequest request
6563
) {
6664

67-
Long memberId = getMemberId(principal);
65+
Long memberId = request.memberId();
6866

6967
Answer answer = answerService.update(answerId, memberId, request);
7068

@@ -77,9 +75,9 @@ public AnswerUpdateResponse update(
7775
@SendTo("/topic/rooms/{roomId}/answers")
7876
public AnswerDeleteResponse delete(
7977
@DestinationVariable Long answerId,
80-
Principal principal
78+
@Payload @Valid StompMemberRequest request
8179
) {
82-
Long memberId = getMemberId(principal);
80+
Long memberId = request.memberId();
8381

8482
answerService.delete(answerId, memberId);
8583

@@ -88,11 +86,4 @@ public AnswerDeleteResponse delete(
8886
return new AnswerDeleteResponse(answerId, EventType.DELETE);
8987
}
9088

91-
private Long getMemberId(Principal principal) {
92-
if (principal == null) {
93-
throw new ErrorException(UNAUTHORIZED_MEMBER);
94-
}
95-
return Long.valueOf(principal.getName());
96-
}
97-
9889
}

src/main/java/com/oronaminc/join/websocket/api/EmojiWebsocketController.java

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
package com.oronaminc.join.websocket.api;
22

3+
import org.springframework.messaging.handler.annotation.DestinationVariable;
4+
import org.springframework.messaging.handler.annotation.MessageMapping;
5+
import org.springframework.messaging.handler.annotation.Payload;
6+
import org.springframework.messaging.handler.annotation.SendTo;
7+
import org.springframework.stereotype.Controller;
8+
39
import com.oronaminc.join.emoji.dto.EmojiRequest;
410
import com.oronaminc.join.emoji.dto.EmojiResponse;
511
import com.oronaminc.join.emoji.service.EmojiFacade;
612
import com.oronaminc.join.global.exception.ErrorCode;
713
import com.oronaminc.join.global.exception.ErrorException;
814
import com.oronaminc.join.global.ratelimit.RateLimitService;
915
import com.oronaminc.join.global.ratelimit.RateLimitType;
16+
1017
import io.github.bucket4j.Bucket;
1118
import jakarta.validation.Valid;
12-
import java.security.Principal;
1319
import lombok.RequiredArgsConstructor;
14-
import org.springframework.messaging.handler.annotation.DestinationVariable;
15-
import org.springframework.messaging.handler.annotation.MessageMapping;
16-
import org.springframework.messaging.handler.annotation.Payload;
17-
import org.springframework.messaging.handler.annotation.SendTo;
18-
import org.springframework.stereotype.Controller;
1920

2021
@Controller
2122
@RequiredArgsConstructor
@@ -28,10 +29,9 @@ public class EmojiWebsocketController {
2829
@SendTo("/topic/rooms/{roomId}/emojis")
2930
public EmojiResponse createEmoji(
3031
@DestinationVariable Long roomId,
31-
@Payload @Valid EmojiRequest emojiRequest,
32-
Principal principal
32+
@Payload @Valid EmojiRequest emojiRequest
3333
) {
34-
Long memberId = Long.valueOf(principal.getName());
34+
Long memberId = emojiRequest.memberId();
3535

3636
Bucket bucket = rateLimitService.getBucket(RateLimitType.EMOJI, memberId,
3737
emojiRequest.targetType(), emojiRequest.targetId());
@@ -47,10 +47,9 @@ public EmojiResponse createEmoji(
4747
@SendTo("/topic/rooms/{roomId}/emojis")
4848
public EmojiResponse deleteEmoji(
4949
@DestinationVariable Long roomId,
50-
@Payload @Valid EmojiRequest emojiRequest,
51-
Principal principal
50+
@Payload @Valid EmojiRequest emojiRequest
5251
) {
53-
Long memberId = Long.valueOf(principal.getName());
52+
Long memberId = emojiRequest.memberId();
5453

5554
Bucket bucket = rateLimitService.getBucket(RateLimitType.EMOJI, memberId,
5655
emojiRequest.targetType(), emojiRequest.targetId());

src/main/java/com/oronaminc/join/websocket/api/QuestionWebsocketController.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.oronaminc.join.websocket.api;
22

3-
import java.security.Principal;
4-
53
import org.springframework.messaging.handler.annotation.DestinationVariable;
64
import org.springframework.messaging.handler.annotation.MessageMapping;
75
import org.springframework.messaging.handler.annotation.Payload;
@@ -37,11 +35,9 @@ public class QuestionWebsocketController {
3735
@SendTo("/topic/rooms/{roomId}/questions")
3836
public QuestionCreateResponse createQuestion(
3937
@DestinationVariable Long roomId,
40-
@Payload @Valid QuestionRequest request,
41-
Principal principal
38+
@Payload @Valid QuestionRequest request
4239
) {
4340
log.debug("수신한 메시지 = {}", request.content());
44-
log.debug("principal = {}", principal);
4541

4642
Long memberId = request.memberId();
4743

@@ -64,11 +60,10 @@ public QuestionCreateResponse createQuestion(
6460
public QuestionUpdateResponse updateQuestion(
6561
@DestinationVariable Long roomId,
6662
@DestinationVariable Long questionId,
67-
@Payload @Valid QuestionRequest request,
68-
Principal principal
63+
@Payload @Valid QuestionRequest request
6964
) {
7065

71-
Long memberId = Long.valueOf(principal.getName());
66+
Long memberId = request.memberId();
7267

7368
Question updated = questionService.update(memberId, roomId, questionId, request);
7469

@@ -80,9 +75,9 @@ public QuestionUpdateResponse updateQuestion(
8075
public QuestionDeleteResponse deleteQuestion(
8176
@DestinationVariable Long roomId,
8277
@DestinationVariable Long questionId,
83-
Principal principal
78+
@Payload @Valid StompMemberRequest request
8479
) {
85-
Long memberId = Long.valueOf(principal.getName());
80+
Long memberId = request.memberId();
8681

8782
Long deletedId = questionService.delete(memberId, roomId, questionId);
8883

src/main/java/com/oronaminc/join/websocket/api/RoomWebsocketController.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.oronaminc.join.websocket.api;
22

3-
import java.security.Principal;
4-
53
import org.springframework.messaging.Message;
64
import org.springframework.messaging.handler.annotation.DestinationVariable;
75
import org.springframework.messaging.handler.annotation.MessageMapping;
@@ -25,10 +23,10 @@ public class RoomWebsocketController {
2523
@SendTo("/topic/rooms/{roomId}/join")
2624
public RoomJoinResponse joinRoom(
2725
@DestinationVariable Long roomId,
28-
Principal principal,
26+
StompMemberRequest request,
2927
Message<?> message
3028
) {
31-
Long memberId = Long.valueOf(principal.getName());
29+
Long memberId = request.memberId();
3230
StompHeaderAccessor accessor = StompHeaderAccessor.wrap(message);
3331
String sessionId = accessor.getSessionId();
3432

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.oronaminc.join.websocket.api;
2+
3+
import jakarta.validation.constraints.NotNull;
4+
5+
public record StompMemberRequest(
6+
@NotNull
7+
Long memberId
8+
) {
9+
}

0 commit comments

Comments
 (0)