11package pawparazzi .back .member .controller ;
22
3- import com .fasterxml .jackson .core .JsonProcessingException ;
4- import com .fasterxml .jackson .databind .ObjectMapper ;
5- import io .jsonwebtoken .JwtException ;
63import jakarta .validation .Valid ;
74import lombok .RequiredArgsConstructor ;
8- import org .springframework .http .HttpStatus ;
95import org .springframework .http .MediaType ;
106import org .springframework .http .ResponseEntity ;
7+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
118import org .springframework .web .bind .annotation .*;
129import org .springframework .web .multipart .MultipartFile ;
1310import pawparazzi .back .member .dto .request .LoginRequestDto ;
14- import pawparazzi .back .member .dto .request .SignUpRequestDto ;
15- import pawparazzi .back .member .dto .request .UpdateMemberRequestDto ;
1611import pawparazzi .back .member .dto .response .MemberResponseDto ;
1712import pawparazzi .back .member .dto .response .UpdateMemberResponseDto ;
1813import pawparazzi .back .member .entity .Member ;
1914import pawparazzi .back .member .service .MemberService ;
20- import pawparazzi .back .security .util . JwtUtil ;
15+ import pawparazzi .back .security .user . CustomUserDetails ;
2116
2217import java .util .List ;
2318import java .util .Map ;
2823@ RequiredArgsConstructor
2924public class MemberController {
3025
31- private final JwtUtil jwtUtil ;
3226 private final MemberService memberService ;
33- private final ObjectMapper objectMapper ;
3427
3528 /**
3629 * 회원 가입
@@ -40,17 +33,10 @@ public CompletableFuture<ResponseEntity<String>> registerUser(
4033 @ RequestPart (value = "profileImage" , required = false ) MultipartFile profileImage ,
4134 @ RequestPart ("userData" ) String userDataJson ) {
4235
43- // JSON 데이터를 DTO로 변환
44- SignUpRequestDto request ;
45- try {
46- request = objectMapper .readValue (userDataJson , SignUpRequestDto .class );
47- } catch (JsonProcessingException e ) {
48- return CompletableFuture .completedFuture (ResponseEntity .badRequest ().body ("Invalid JSON format" ));
49- }
50-
5136 // 비동기 회원가입 처리 후 응답 반환
52- return memberService .registerUser (request , profileImage )
53- .thenApply (unused -> ResponseEntity .ok ("회원가입 성공" ));
37+ return memberService .registerUser (userDataJson , profileImage )
38+ .thenApply (unused -> ResponseEntity .ok ("회원가입 성공" ))
39+ .exceptionally (ex -> ResponseEntity .badRequest ().body ("Invalid JSON format" ));
5440 }
5541
5642 /**
@@ -66,14 +52,8 @@ public ResponseEntity<Map<String, String>> login(@Valid @RequestBody LoginReques
6652 * 사용자 정보 조회
6753 */
6854 @ GetMapping ("/me" )
69- public ResponseEntity <Member > getCurrentUser (@ RequestHeader ("Authorization" ) String token ) {
70- token = token .replace ("Bearer " , "" );
71- Long memberId ;
72- try {
73- memberId = jwtUtil .extractMemberId (token );
74- } catch (JwtException e ) {
75- return ResponseEntity .status (HttpStatus .UNAUTHORIZED ).build ();
76- }
55+ public ResponseEntity <Member > getCurrentUser (@ AuthenticationPrincipal CustomUserDetails userDetails ) {
56+ Long memberId = userDetails .getId ();
7757 Member member = memberService .findById (memberId );
7858 return ResponseEntity .ok (member );
7959 }
@@ -83,43 +63,23 @@ public ResponseEntity<Member> getCurrentUser(@RequestHeader("Authorization") Str
8363 */
8464 @ PatchMapping (value = "/me" , consumes = MediaType .MULTIPART_FORM_DATA_VALUE )
8565 public CompletableFuture <ResponseEntity <UpdateMemberResponseDto >> updateMember (
86- @ RequestHeader ( "Authorization" ) String token ,
66+ @ AuthenticationPrincipal CustomUserDetails userDetails ,
8767 @ RequestPart (value = "profileImage" , required = false ) MultipartFile profileImage ,
8868 @ RequestPart (value = "userData" , required = false ) String userDataJson ) {
8969
90- token = token .replace ("Bearer " , "" );
91- Long memberId ;
92- try {
93- memberId = jwtUtil .extractMemberId (token );
94- } catch (JwtException e ) {
95- return CompletableFuture .completedFuture (ResponseEntity .status (HttpStatus .UNAUTHORIZED ).build ());
96- }
97-
98- try {
99- UpdateMemberRequestDto request = (userDataJson == null || userDataJson .isBlank ())
100- ? new UpdateMemberRequestDto ()
101- : objectMapper .readValue (userDataJson , UpdateMemberRequestDto .class );
70+ Long memberId = userDetails .getId ();
10271
103- return memberService .updateMember (memberId , request , profileImage )
104- .thenApply (ResponseEntity ::ok );
105- } catch (JsonProcessingException e ) {
106- return CompletableFuture .completedFuture (ResponseEntity .badRequest ().body (null ));
107- }
72+ return memberService .updateMember (memberId , userDataJson , profileImage )
73+ .thenApply (ResponseEntity ::ok )
74+ .exceptionally (ex -> ResponseEntity .badRequest ().body (null ));
10875 }
10976
11077 /**
11178 * 회원 탈퇴
11279 */
11380 @ DeleteMapping ("/delete" )
114- public ResponseEntity <String > deleteMember (@ RequestHeader ("Authorization" ) String token ) {
115- token = token .replace ("Bearer " , "" );
116- Long memberId ;
117- try {
118- memberId = jwtUtil .extractMemberId (token );
119- } catch (JwtException e ) {
120- return ResponseEntity .status (HttpStatus .UNAUTHORIZED ).build ();
121- }
122- memberService .deleteMember (memberId );
81+ public ResponseEntity <String > deleteMember (@ AuthenticationPrincipal CustomUserDetails userDetails ) {
82+ memberService .deleteMember (userDetails .getId ());
12383 return ResponseEntity .ok ("회원 탈퇴 완료" );
12484 }
12585
@@ -136,17 +96,10 @@ public ResponseEntity<List<MemberResponseDto>> getAllMembers() {
13696 * 로그아웃
13797 */
13898 @ PostMapping ("/logout" )
139- public ResponseEntity <String > logout (@ RequestHeader ( "Authorization" ) String accessToken ,
99+ public ResponseEntity <String > logout (@ AuthenticationPrincipal CustomUserDetails userDetails ,
140100 @ RequestBody Map <String , String > body ) {
141101 String refreshToken = body .get ("refreshToken" );
142- accessToken = accessToken .replace ("Bearer " , "" );
143- Long memberId ;
144- try {
145- memberId = jwtUtil .extractMemberId (accessToken );
146- } catch (JwtException e ) {
147- return ResponseEntity .status (HttpStatus .UNAUTHORIZED ).build ();
148- }
149- memberService .logout (memberId , refreshToken );
102+ memberService .logout (userDetails .getId (), refreshToken );
150103 return ResponseEntity .ok ("로그아웃 완료" );
151104 }
152105
0 commit comments