Skip to content

Commit 46bdeb0

Browse files
authored
Merge pull request #243 from QASTUDIODEV/feature/#224-invite-valid-check
🔨 Refactor: 토큰 값 입력으로 변경
2 parents 391d07c + ab5a6c5 commit 46bdeb0

File tree

4 files changed

+22
-12
lines changed

4 files changed

+22
-12
lines changed

src/main/java/qastudio/backend/domain/project/controller/TeamMemberController.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}

src/main/java/qastudio/backend/domain/project/dto/request/TeamMemberRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff 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
}

src/main/java/qastudio/backend/domain/project/service/TeamMemberCommandService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,5 @@
77
public 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
}

src/main/java/qastudio/backend/domain/project/service/TeamMemberCommandServiceImpl.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff 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);

0 commit comments

Comments
 (0)