11package com .example .ecommercewebservice .domain .user .controller ;
22
3- import com .example .ecommercewebservice .domain .user .dto .LoginRequest ;
4- import com .example .ecommercewebservice .domain .user .dto .LoginResponse ;
5- import com .example .ecommercewebservice .domain .user .dto .SignupRequest ;
6- import com .example .ecommercewebservice .domain .user .dto .SignupResponse ;
3+ import com .example .ecommercewebservice .config .UserRole ;
4+ import com .example .ecommercewebservice .domain .user .dto .response .UserProfileResponse ;
5+ import com .example .ecommercewebservice .domain .user .dto .request .UserUpdateRequestDto ;
6+ import com .example .ecommercewebservice .domain .user .dto .response .UserResponseDto ;
7+ import com .example .ecommercewebservice .domain .user .dto .signIn .LoginRequest ;
8+ import com .example .ecommercewebservice .domain .user .dto .signIn .LoginResponse ;
9+ import com .example .ecommercewebservice .domain .user .dto .signUp .SignupRequest ;
10+ import com .example .ecommercewebservice .domain .user .dto .signUp .SignupResponse ;
711import com .example .ecommercewebservice .domain .user .entity .User ;
812import com .example .ecommercewebservice .domain .user .service .UserService ;
913import com .example .ecommercewebservice .global .constant .MessageConstants ;
1014import com .example .ecommercewebservice .global .dto .RsData ;
15+ import com .example .ecommercewebservice .global .security .annotation .RoleRequired ;
1116import jakarta .validation .Valid ;
1217import lombok .RequiredArgsConstructor ;
1318import org .springframework .http .HttpStatus ;
1419import org .springframework .http .ResponseEntity ;
15- import org .springframework .web .bind .annotation .PostMapping ;
16- import org .springframework .web .bind .annotation .RequestBody ;
17- import org .springframework .web .bind .annotation .RequestMapping ;
18- import org .springframework .web .bind .annotation .RequestHeader ;
19- import org .springframework .web .bind .annotation .RestController ;
20+ import org .springframework .security .core .annotation .AuthenticationPrincipal ;
21+ import org .springframework .web .bind .annotation .*;
2022
2123import java .util .Map ;
2224
@@ -44,7 +46,7 @@ public ResponseEntity<RsData<SignupResponse>> signup(@Valid @RequestBody SignupR
4446 public ResponseEntity <RsData <LoginResponse >> login (@ Valid @ RequestBody LoginRequest loginRequest ) {
4547 // 로그인 로직 구현 - 예외는 GlobalExceptionHandler에서 처리
4648 LoginResponse loginResponse = userService .login (loginRequest );
47-
49+
4850 // 성공 시 - 로그인 응답 반환
4951 RsData <LoginResponse > rsData = new RsData <>(String .valueOf (HttpStatus .OK .value ()), MessageConstants .LOGIN_SUCCESS , loginResponse );
5052 return ResponseEntity .ok (rsData );
@@ -60,4 +62,32 @@ public ResponseEntity<Map<String, String>> logout(@RequestHeader("Authorization"
6062 }
6163 return ResponseEntity .badRequest ().body (Map .of ("error" , "유효하지 않은 인증 정보입니다." ));
6264 }
65+
66+ // 사용자 프로필(정보) 조회
67+ @ GetMapping ("/me" )
68+ @ RoleRequired (UserRole .USER ) // USER 권한이 있는 사용자만 접근 가능
69+ public ResponseEntity <RsData <UserProfileResponse >> getMyProfile (@ AuthenticationPrincipal User user ) { // @AuthenticationPrincipal 어노테이션을 사용하여 현재 로그인한 사용자 정보를 가져와서 User에 주입, 메서드 파라미터에만 사용할 수 있다.
70+ UserProfileResponse profile = userService .getMyProfile (user );
71+ RsData <UserProfileResponse > rsData = new RsData <>(
72+ String .valueOf (HttpStatus .OK .value ()),
73+ "프로필 조회 성공" ,
74+ profile
75+ );
76+ return ResponseEntity .ok (rsData );
77+ }
78+
79+ // 사용자 프로필(정보) 수정
80+ @ PutMapping ("/me" )
81+ @ RoleRequired (UserRole .USER )
82+ public ResponseEntity <RsData <UserResponseDto >> updateProfile (
83+ @ AuthenticationPrincipal User user ,
84+ @ Valid @ RequestBody UserUpdateRequestDto request ) {
85+ UserResponseDto response = userService .updateProfile (user .getUserId (), request );
86+ RsData <UserResponseDto > rsData = new RsData <>(
87+ String .valueOf (HttpStatus .OK .value ()),
88+ "프로필 수정 성공" ,
89+ response
90+ );
91+ return ResponseEntity .ok (rsData );
92+ }
6393}
0 commit comments