File tree Expand file tree Collapse file tree 4 files changed +22
-12
lines changed
src/main/java/qastudio/backend/domain/project Expand file tree Collapse file tree 4 files changed +22
-12
lines changed Original file line number Diff line number Diff line change @@ -225,9 +225,9 @@ public ApiResponse<TeamMemberResponse.AcceptInvitation> acceptInvitation(@Reques
225225 )
226226 @ PostMapping ("/team-members/email-invite" )
227227 public ApiResponse <TeamMemberResponse .AcceptInvitation > acceptInvitation (@ RequestBody @ Valid TeamMemberRequest .InviteWithEmail inviteWithEmail ) {
228- teamMemberCommandService .inviteMemberWithEmailAndProjectId (
228+ teamMemberCommandService .inviteMemberWithEmailAndToken (
229229 inviteWithEmail .getEmail (),
230- inviteWithEmail .getProjectId ()
230+ inviteWithEmail .getToken ()
231231 );
232232 return ApiResponse .onSuccess (null );
233233 }
Original file line number Diff line number Diff line change @@ -37,8 +37,8 @@ public static class InviteWithEmail {
3737 @ NotBlank (message = "이메일은 필수 입력 값입니다." )
3838 private String email ;
3939 // projectId
40- @ NotNull (message = "projectId는 필수 입력 값입니다." )
41- private Long projectId ;
40+ @ NotBlank (message = "token은 필수 입력 값입니다." )
41+ private String token ;
4242 }
4343
4444}
Original file line number Diff line number Diff line change 77public interface TeamMemberCommandService {
88 void deleteMembers (Long projectId , TeamMemberRequest .MemberEmail deleteMember );
99 TeamMemberResponse .AcceptInvitation inviteMemberWithToken (String token );
10- void inviteMemberWithEmailAndProjectId (String email , Long projectId );
10+ void inviteMemberWithEmailAndToken (String email , String token );
1111}
Original file line number Diff line number Diff line change @@ -109,13 +109,23 @@ public TeamMemberResponse.AcceptInvitation inviteMemberWithToken(String token) {
109109 }
110110
111111 @ Override
112- public void inviteMemberWithEmailAndProjectId (String email , Long projectId ) {
113- // 초대하고자 하는 유저
114- Long userId = accountTableRepository .findByEmail (email ).stream ()
115- .map (AccountTable ::getUser )
116- .map (User ::getId )
117- .findFirst ()
118- .orElseThrow (() -> new BadRequestException (ErrorStatus .USER_NOT_FOUND ));
112+ public void inviteMemberWithEmailAndToken (String email , String token ) {
113+ if (token == null || token .trim ().isEmpty ()) {
114+ throw new TeamMemberException (ErrorStatus .TOKEN_MISSING );
115+ }
116+
117+ Claims claims = inviteTokenProvider .validateToken (token );
118+ Long projectId = claims .get ("projectId" , Long .class );
119+ Long userId = claims .get ("userId" , Long .class );
120+
121+ if (userId == -1 ) {
122+ // 초대하고자 하는 유저
123+ userId = accountTableRepository .findByEmail (email ).stream ()
124+ .map (AccountTable ::getUser )
125+ .map (User ::getId )
126+ .findFirst ()
127+ .orElseThrow (() -> new BadRequestException (ErrorStatus .USER_NOT_FOUND ));
128+ }
119129
120130 // 중복 초대되었는지 확인
121131 boolean isAlreadyInvited = userProjectRepository .existsByUserIdAndProjectId (userId , projectId );
You can’t perform that action at this time.
0 commit comments