Skip to content

Commit af123be

Browse files
committed
2024-10-23 - feedback - external reviewer - server-side
1 parent c811d62 commit af123be

File tree

3 files changed

+378
-20
lines changed

3 files changed

+378
-20
lines changed

server/src/main/java/com/objectcomputing/checkins/services/feedback_external_recipient/FeedbackExternalRecipientController.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@ public HttpResponse<FeedbackRequestResponseDTO> update(@Body @Valid @NotNull Fee
6767
.headers(headers -> headers.location(URI.create("/feedback_request/" + savedFeedback.getId())));
6868
}
6969

70+
/**
71+
* Get feedback request by ID
72+
*
73+
* @param id {@link UUID} ID of the request
74+
* @return {@link FeedbackRequestResponseDTO}
75+
*/
76+
//@Secured(SecurityRule.IS_ANONYMOUS)
77+
@Get("/{id}")
78+
public HttpResponse<FeedbackRequestResponseDTO> getById(UUID id) {
79+
FeedbackRequest feedbackRequest = feedbackReqServices.getById(id);
80+
if (feedbackRequest.getExternalRecipientId() == null) {
81+
throw new BadArgException("Missing required parameter: externalRecipientId");
82+
}
83+
return feedbackRequest == null ? HttpResponse.notFound() : HttpResponse.ok(fromEntity(feedbackRequest))
84+
.headers(headers -> headers.location(URI.create("/feedback_request" + feedbackRequest.getId())));
85+
}
86+
7087
private FeedbackRequestResponseDTO fromEntity(FeedbackRequest feedbackRequest) {
7188
FeedbackRequestResponseDTO dto = new FeedbackRequestResponseDTO();
7289
dto.setId(feedbackRequest.getId());

server/src/main/java/com/objectcomputing/checkins/services/feedback_request/FeedbackRequestServicesImpl.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,9 +351,12 @@ public FeedbackRequest getById(UUID id) {
351351
} else {
352352
if (externalRecipientId == null) {
353353
throw new PermissionException(NOT_AUTHORIZED_MSG);
354+
} else {
355+
if (!getIsPermittedForExternalRecipient(requesteeId, sendDate)) {
356+
throw new PermissionException(NOT_AUTHORIZED_MSG);
357+
}
354358
}
355359
}
356-
357360
return feedbackReq.get();
358361
}
359362

@@ -427,6 +430,17 @@ private boolean getIsPermitted(UUID requesteeId, UUID recipientOrExternalRecipie
427430
return createIsPermitted(requesteeId) || currentUserId.equals(recipientOrExternalRecipientId);
428431
}
429432

433+
private boolean getIsPermittedForExternalRecipient(UUID requesteeId, LocalDate sendDate) {
434+
LocalDate today = LocalDate.now();
435+
436+
// The recipient can only access the feedback request after it has been sent
437+
if (sendDate.isAfter(today)) {
438+
throw new PermissionException("You are not permitted to access this request before the send date.");
439+
}
440+
441+
return true;
442+
}
443+
430444
private boolean updateDueDateIsPermitted(FeedbackRequest feedbackRequest) {
431445
return isCurrentUserAdminOrOwner(feedbackRequest);
432446
}

0 commit comments

Comments
 (0)