File tree Expand file tree Collapse file tree 8 files changed +74
-1
lines changed
src/main/java/org/terning/terningserver Expand file tree Collapse file tree 8 files changed +74
-1
lines changed Original file line number Diff line number Diff line change 66import org .springframework .security .core .annotation .AuthenticationPrincipal ;
77import org .springframework .web .bind .annotation .*;
88import org .terning .terningserver .auth .application .AuthService ;
9+ import org .terning .terningserver .auth .dto .request .FcmTokenSyncRequest ;
910import org .terning .terningserver .auth .dto .request .SignInRequest ;
1011import org .terning .terningserver .auth .dto .request .SignUpFilterRequestDto ;
1112import org .terning .terningserver .auth .dto .request .SignUpRequestDto ;
1920import static org .terning .terningserver .common .exception .enums .SuccessMessage .SUCCESS_SIGN_OUT ;
2021import static org .terning .terningserver .common .exception .enums .SuccessMessage .SUCCESS_SIGN_UP ;
2122import static org .terning .terningserver .common .exception .enums .SuccessMessage .SUCCESS_SIGN_UP_FILTER ;
23+ import static org .terning .terningserver .common .exception .enums .SuccessMessage .SUCCESS_USER_SYNC ;
2224import static org .terning .terningserver .common .exception .enums .SuccessMessage .SUCCESS_WITHDRAW ;
2325
2426
@@ -78,4 +80,13 @@ public ResponseEntity<SuccessResponse> withdraw(@AuthenticationPrincipal Long us
7880
7981 return ResponseEntity .ok (SuccessResponse .of (SUCCESS_WITHDRAW ));
8082 }
83+
84+ @ PostMapping ("/sync-user" )
85+ public ResponseEntity <SuccessResponse > syncUser (
86+ @ AuthenticationPrincipal Long userId ,
87+ @ RequestBody FcmTokenSyncRequest request
88+ ) {
89+ authService .syncUser (userId , request );
90+ return ResponseEntity .ok (SuccessResponse .of (SUCCESS_USER_SYNC ));
91+ }
8192}
Original file line number Diff line number Diff line change 77import org .springframework .security .core .annotation .AuthenticationPrincipal ;
88import org .springframework .web .bind .annotation .RequestBody ;
99import org .springframework .web .bind .annotation .RequestHeader ;
10+ import org .terning .terningserver .auth .dto .request .FcmTokenSyncRequest ;
1011import org .terning .terningserver .auth .dto .request .SignInRequest ;
1112import org .terning .terningserver .auth .dto .request .SignUpFilterRequestDto ;
1213import org .terning .terningserver .auth .dto .request .SignUpRequestDto ;
@@ -52,4 +53,10 @@ ResponseEntity<SuccessResponse> signOut(
5253 @ Operation (summary = "계정탈퇴" , description = "계정탈퇴 API" )
5354 ResponseEntity <SuccessResponse > withdraw (
5455 @ AuthenticationPrincipal Long userId );
56+
57+ @ Operation (summary = "유저동기화" , description = "유저동기화 API" )
58+ ResponseEntity <SuccessResponse > syncUser (
59+ @ AuthenticationPrincipal Long userId ,
60+ @ RequestBody FcmTokenSyncRequest request
61+ );
5562}
Original file line number Diff line number Diff line change 77import org .terning .terningserver .auth .application .signin .AuthSignInService ;
88import org .terning .terningserver .auth .application .signout .AuthSignOutService ;
99import org .terning .terningserver .auth .application .signup .AuthSignUpService ;
10+ import org .terning .terningserver .auth .application .syncUser .AuthSyncUserService ;
1011import org .terning .terningserver .auth .application .withdraw .AuthWithdrawService ;
12+ import org .terning .terningserver .auth .dto .request .FcmTokenSyncRequest ;
1113import org .terning .terningserver .auth .dto .request .SignInRequest ;
1214import org .terning .terningserver .auth .dto .request .SignUpFilterRequestDto ;
1315import org .terning .terningserver .auth .dto .request .SignUpRequestDto ;
@@ -25,6 +27,7 @@ public class AuthService {
2527 private final AuthSignOutService authSignOutService ;
2628 private final AuthWithdrawService authWithdrawService ;
2729 private final AuthReissueService authReissueService ;
30+ private final AuthSyncUserService authSyncUserService ;
2831
2932 @ Transactional
3033 public SignInResponse signIn (String authAccessToken , SignInRequest request ) {
@@ -58,4 +61,9 @@ public AccessTokenGetResponseDto reissueToken(String refreshToken) {
5861 AccessTokenGetResponseDto accessTokenGetResponseDto = authReissueService .reissueToken (refreshToken );
5962 return accessTokenGetResponseDto ;
6063 }
64+
65+ @ Transactional
66+ public void syncUser (long userId , FcmTokenSyncRequest request ) {
67+ authSyncUserService .syncUser (userId , request );
68+ }
6169}
Original file line number Diff line number Diff line change 1+ package org .terning .terningserver .auth .application .syncUser ;
2+
3+ import org .terning .terningserver .auth .dto .request .FcmTokenSyncRequest ;
4+
5+ public interface AuthSyncUserService {
6+
7+ void syncUser (long userId , FcmTokenSyncRequest request );
8+ }
Original file line number Diff line number Diff line change 1+ package org .terning .terningserver .auth .application .syncUser ;
2+
3+ import static org .terning .terningserver .common .exception .enums .ErrorMessage .NOT_FOUND_USER_EXCEPTION ;
4+
5+ import lombok .RequiredArgsConstructor ;
6+ import org .springframework .stereotype .Service ;
7+ import org .springframework .transaction .annotation .Transactional ;
8+ import org .terning .terningserver .auth .dto .request .FcmTokenSyncRequest ;
9+ import org .terning .terningserver .common .exception .CustomException ;
10+ import org .terning .terningserver .external .pushNotification .notification .NotificationUserClient ;
11+ import org .terning .terningserver .user .domain .User ;
12+ import org .terning .terningserver .user .repository .UserRepository ;
13+
14+ @ Service
15+ @ RequiredArgsConstructor
16+ public class AuthSyncUserServiceImpl implements AuthSyncUserService {
17+
18+ private final UserRepository userRepository ;
19+ private final NotificationUserClient notificationUserClient ;
20+
21+ @ Transactional
22+ @ Override
23+ public void syncUser (long userId , FcmTokenSyncRequest request ) {
24+ User user = userRepository .findById (userId )
25+ .orElseThrow (() -> new CustomException (NOT_FOUND_USER_EXCEPTION ));
26+
27+ notificationUserClient .createOrUpdateUser (user , request .fcmToken ());
28+ }
29+ }
Original file line number Diff line number Diff line change 1+ package org .terning .terningserver .auth .dto .request ;
2+
3+ public record FcmTokenSyncRequest (
4+ String fcmToken
5+ ) {
6+ }
Original file line number Diff line number Diff line change 33import lombok .RequiredArgsConstructor ;
44import org .springframework .context .annotation .Bean ;
55import org .springframework .context .annotation .Configuration ;
6+ import org .springframework .security .config .annotation .method .configuration .EnableMethodSecurity ;
67import org .springframework .security .config .annotation .web .builders .HttpSecurity ;
78import org .springframework .security .config .annotation .web .configuration .EnableWebSecurity ;
89import org .springframework .security .config .annotation .web .configurers .AbstractHttpConfigurer ;
1516@ Configuration
1617@ EnableWebSecurity
1718@ RequiredArgsConstructor
19+ @ EnableMethodSecurity
1820public class SecurityConfig {
1921
2022 private final JwtAuthenticationFilter jwtAuthenticationFilter ;
Original file line number Diff line number Diff line change @@ -55,8 +55,10 @@ public enum SuccessMessage {
5555 // My page (마이페이지 화면)
5656 SUCCESS_GET_PROFILE (200 , "마이페이지 > 프로필 정보 불러오기를 성공했습니다" ),
5757 SUCCESS_UPDATE_PROFILE (200 , "프로필 수정에 성공했습니다" ),
58- PUSH_STATUS_UPDATED (200 , "사용자 푸시알림 여부 변경을 완료했습니다." );
58+ PUSH_STATUS_UPDATED (200 , "사용자 푸시알림 여부 변경을 완료했습니다." ),
5959
60+ // 유저 동기화
61+ SUCCESS_USER_SYNC (201 , "유저 동기화를 성공했습니다." );
6062
6163 private final int status ;
6264 private final String message ;
You can’t perform that action at this time.
0 commit comments