55import com .back .domain .studyroom .entity .RoomMember ;
66import com .back .domain .studyroom .service .RoomService ;
77import com .back .global .common .dto .RsData ;
8+ import com .back .global .security .CurrentUser ;
89import io .swagger .v3 .oas .annotations .Operation ;
910import io .swagger .v3 .oas .annotations .Parameter ;
10- import io .swagger .v3 .oas .annotations .media .Content ;
11- import io .swagger .v3 .oas .annotations .media .Schema ;
1211import io .swagger .v3 .oas .annotations .responses .ApiResponse ;
1312import io .swagger .v3 .oas .annotations .responses .ApiResponses ;
13+ import io .swagger .v3 .oas .annotations .security .SecurityRequirement ;
1414import io .swagger .v3 .oas .annotations .tags .Tag ;
1515import jakarta .validation .Valid ;
1616import lombok .RequiredArgsConstructor ;
2727import java .util .stream .Collectors ;
2828
2929/**
30- * - 모든 API는 Authorization 헤더 필요 (JWT 토큰)
31- * - 현재는 임시로 하드코딩된 사용자 ID 사용
32- * - JWT 연동 시 @CurrentUser 애노테이션으로 교체 예정
30+ * 스터디 룸 관련 API 컨트롤러
31+ * - JWT 인증 필수 (Spring Security + CurrentUser)
32+ * - Swagger에서 테스트 시 "Authorize" 버튼으로 토큰 입력
3333 */
3434@ RestController
3535@ RequestMapping ("/api/rooms" )
3636@ RequiredArgsConstructor
3737@ Tag (name = "Room API" , description = "스터디 룸 관련 API" )
38+ @ SecurityRequirement (name = "Bearer Authentication" )
3839public class RoomController {
3940 private final RoomService roomService ;
41+ private final CurrentUser currentUser ;
4042
4143 @ PostMapping
4244 @ Operation (
@@ -49,10 +51,9 @@ public class RoomController {
4951 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
5052 })
5153 public ResponseEntity <RsData <RoomResponse >> createRoom (
52- @ Valid @ RequestBody CreateRoomRequest request ,
53- @ RequestHeader ("Authorization" ) String authorization ) {
54+ @ Valid @ RequestBody CreateRoomRequest request ) {
5455
55- Long currentUserId = 1L ; // 임시 하드코딩 - JWT 연동 시 @CurrentUser로 교체
56+ Long currentUserId = currentUser . getUserId ();
5657
5758 Room room = roomService .createRoom (
5859 request .getTitle (),
@@ -83,10 +84,9 @@ public ResponseEntity<RsData<RoomResponse>> createRoom(
8384 })
8485 public ResponseEntity <RsData <JoinRoomResponse >> joinRoom (
8586 @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
86- @ RequestBody (required = false ) JoinRoomRequest request ,
87- @ RequestHeader ("Authorization" ) String authorization ) {
87+ @ RequestBody (required = false ) JoinRoomRequest request ) {
8888
89- Long currentUserId = 1L ; // 임시 하드코딩
89+ Long currentUserId = currentUser . getUserId ();
9090
9191 String password = null ;
9292 if (request != null ) {
@@ -112,10 +112,9 @@ public ResponseEntity<RsData<JoinRoomResponse>> joinRoom(
112112 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
113113 })
114114 public ResponseEntity <RsData <Void >> leaveRoom (
115- @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
116- @ RequestHeader ("Authorization" ) String authorization ) {
115+ @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ) {
117116
118- Long currentUserId = 1L ; // 임시 하드코딩
117+ Long currentUserId = currentUser . getUserId ();
119118
120119 roomService .leaveRoom (roomId , currentUserId );
121120
@@ -169,10 +168,9 @@ public ResponseEntity<RsData<Map<String, Object>>> getRooms(
169168 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
170169 })
171170 public ResponseEntity <RsData <RoomDetailResponse >> getRoomDetail (
172- @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
173- @ RequestHeader ("Authorization" ) String authorization ) {
171+ @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ) {
174172
175- Long currentUserId = 1L ; // 임시 하드코딩
173+ Long currentUserId = currentUser . getUserId ();
176174
177175 Room room = roomService .getRoomDetail (roomId , currentUserId );
178176 List <RoomMember > members = roomService .getRoomMembers (roomId , currentUserId );
@@ -197,10 +195,9 @@ public ResponseEntity<RsData<RoomDetailResponse>> getRoomDetail(
197195 @ ApiResponse (responseCode = "200" , description = "조회 성공" ),
198196 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
199197 })
200- public ResponseEntity <RsData <List <MyRoomResponse >>> getMyRooms (
201- @ RequestHeader ("Authorization" ) String authorization ) {
198+ public ResponseEntity <RsData <List <MyRoomResponse >>> getMyRooms () {
202199
203- Long currentUserId = 1L ; // 임시 하드코딩
200+ Long currentUserId = currentUser . getUserId ();
204201
205202 List <Room > rooms = roomService .getUserRooms (currentUserId );
206203
@@ -230,10 +227,9 @@ public ResponseEntity<RsData<List<MyRoomResponse>>> getMyRooms(
230227 })
231228 public ResponseEntity <RsData <Void >> updateRoom (
232229 @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
233- @ Valid @ RequestBody UpdateRoomSettingsRequest request ,
234- @ RequestHeader ("Authorization" ) String authorization ) {
230+ @ Valid @ RequestBody UpdateRoomSettingsRequest request ) {
235231
236- Long currentUserId = 1L ; // 임시 하드코딩
232+ Long currentUserId = currentUser . getUserId ();
237233
238234 roomService .updateRoomSettings (
239235 roomId ,
@@ -263,10 +259,9 @@ public ResponseEntity<RsData<Void>> updateRoom(
263259 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
264260 })
265261 public ResponseEntity <RsData <Void >> deleteRoom (
266- @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
267- @ RequestHeader ("Authorization" ) String authorization ) {
262+ @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ) {
268263
269- Long currentUserId = 1L ; // 임시 하드코딩
264+ Long currentUserId = currentUser . getUserId ();
270265
271266 roomService .terminateRoom (roomId , currentUserId );
272267
@@ -287,10 +282,9 @@ public ResponseEntity<RsData<Void>> deleteRoom(
287282 @ ApiResponse (responseCode = "401" , description = "인증 실패" )
288283 })
289284 public ResponseEntity <RsData <List <RoomMemberResponse >>> getRoomMembers (
290- @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ,
291- @ RequestHeader ("Authorization" ) String authorization ) {
285+ @ Parameter (description = "방 ID" , required = true ) @ PathVariable Long roomId ) {
292286
293- Long currentUserId = 1L ; // 임시 하드코딩
287+ Long currentUserId = currentUser . getUserId ();
294288
295289 List <RoomMember > members = roomService .getRoomMembers (roomId , currentUserId );
296290
0 commit comments