Skip to content

Commit f2f7cef

Browse files
committed
Added a method to get the current user id that does not throw an exception, but returns null. And, a litle formatting and code cleanup in preparation for making a PR.
1 parent 5ae8181 commit f2f7cef

File tree

10 files changed

+75
-130
lines changed

10 files changed

+75
-130
lines changed

server/src/main/java/com/objectcomputing/checkins/services/feedback_answer/FeedbackAnswerServicesImpl.java

Lines changed: 4 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -103,14 +103,7 @@ public FeedbackAnswer getById(UUID id) {
103103
public List<FeedbackAnswer> findByValues(@Nullable UUID questionId, @Nullable UUID requestId) {
104104
List<FeedbackAnswer> response = new ArrayList<>();
105105
FeedbackRequest feedbackRequest;
106-
MemberProfile currentUser;
107-
108-
try {
109-
currentUser = currentUserServices.getCurrentUser();
110-
} catch (NotFoundException e) {
111-
currentUser = null;
112-
}
113-
final UUID currentUserId = (currentUser != null) ? currentUser.getId() : null;
106+
final UUID currentUserId = currentUserServices.getCurrentUserId();
114107

115108
try {
116109
feedbackRequest = feedbackRequestServices.getById(requestId);
@@ -148,35 +141,18 @@ public FeedbackRequest getRelatedFeedbackRequest(FeedbackAnswer feedbackAnswer)
148141

149142
public boolean createIsPermitted(FeedbackRequest feedbackRequest) {
150143
final UUID recipientId = feedbackRequest.getRecipientId();
151-
MemberProfile currentUser;
152-
UUID currentUserId;
153-
154-
try {
155-
currentUser = currentUserServices.getCurrentUser();
156-
currentUserId = currentUser.getId();
157-
} catch (NotFoundException e) {
158-
currentUser = null;
159-
currentUserId = null;
160-
}
161-
return (recipientId != null && recipientId.equals(currentUserId)) || (feedbackRequest.getExternalRecipientId() != null);
144+
return (recipientId != null && recipientId.equals(currentUserServices.getCurrentUserId())) || (feedbackRequest.getExternalRecipientId() != null);
162145
}
163146

164147
public boolean updateIsPermitted(FeedbackRequest feedbackRequest) {
165148
return createIsPermitted(feedbackRequest);
166149
}
167150

168151
public boolean getIsPermitted(FeedbackRequest feedbackRequest) {
169-
MemberProfile currentUser;
170-
171-
try {
172-
currentUser = currentUserServices.getCurrentUser();
173-
} catch (NotFoundException e) {
174-
currentUser = null;
175-
}
176-
final UUID currentUserId = (currentUser != null) ? currentUser.getId() : null;
152+
final UUID currentUserId = currentUserServices.getCurrentUserId();
177153

178154
// Admins can always get questions and answers.
179-
if (currentUser != null && currentUserServices.isAdmin()) {
155+
if (currentUserId != null && currentUserServices.isAdmin()) {
180156
return true;
181157
}
182158

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ public interface FeedbackExternalRecipientRepository extends CrudRepository<Feed
2424
@Override
2525
<S extends FeedbackExternalRecipient> S update(@NotNull @NonNull S entity);
2626

27-
// , PGP_SYM_DECRYPT(cast(FER. as bytea), '${aes.key}') as
28-
2927
@Query("" +
3028
"SELECT id" +
3129
", PGP_SYM_DECRYPT(cast(FER.email as bytea), '${aes.key}') as email" +

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

Lines changed: 29 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import jakarta.inject.Singleton;
2626
import org.slf4j.Logger;
2727
import org.slf4j.LoggerFactory;
28+
2829
import java.io.BufferedReader;
2930
import java.time.format.DateTimeFormatter;
3031
import java.time.LocalDate;
@@ -76,12 +77,12 @@ private record ReviewPeriodInfo(String subject, LocalDate closeDate) {}
7677

7778
public FeedbackRequestServicesImpl(
7879
FeedbackRequestRepository feedbackReqRepository,
79-
CurrentUserServices currentUserServices,
80-
MemberProfileServices memberProfileServices,
81-
ReviewPeriodRepository reviewPeriodRepository,
82-
ReviewAssignmentRepository reviewAssignmentRepository,
83-
@Named(MailJetFactory.MJML_FORMAT) EmailSender emailSender,
84-
CheckInsConfiguration checkInsConfiguration,
80+
CurrentUserServices currentUserServices,
81+
MemberProfileServices memberProfileServices,
82+
ReviewPeriodRepository reviewPeriodRepository,
83+
ReviewAssignmentRepository reviewAssignmentRepository,
84+
@Named(MailJetFactory.MJML_FORMAT) EmailSender emailSender,
85+
CheckInsConfiguration checkInsConfiguration,
8586
FeedbackExternalRecipientServices feedbackExternalRecipientServices
8687
) {
8788
this.feedbackReqRepository = feedbackReqRepository;
@@ -106,7 +107,7 @@ private void validateMembers(FeedbackRequest feedbackRequest) {
106107
throw new BadArgException("Cannot save feedback request with both recipient and external-recipient ID");
107108
}
108109
if (feedbackRequest.getExternalRecipientId() == null && feedbackRequest.getRecipientId() == null) {
109-
throw new BadArgException("Cannot save feedback request without both recipient and external-recipient ID");
110+
throw new BadArgException("Cannot save feedback request without recipient or external-recipient ID");
110111
}
111112

112113
try {
@@ -130,7 +131,6 @@ private void validateMembers(FeedbackRequest feedbackRequest) {
130131
} catch (NotFoundException e) {
131132
throw new BadArgException("Cannot save feedback request with invalid requestee ID");
132133
}
133-
134134
}
135135

136136
@Override
@@ -254,16 +254,9 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
254254
MemberProfile reviewerMemberProfile;
255255
FeedbackExternalRecipient reviewerExternalRecipient;
256256
String reviewerFirstName, reviewerEmail;
257-
MemberProfile currentUser;
257+
final UUID currentUserId = currentUserServices.getCurrentUserId();
258258
boolean currentUserEqualsRequestee = false;
259259

260-
try {
261-
currentUser = currentUserServices.getCurrentUser();
262-
} catch (NotFoundException notFoundException) {
263-
currentUser = null;
264-
}
265-
266-
267260
final FeedbackRequest feedbackRequest = this.getFromDTO(feedbackRequestUpdateDTO);
268261
FeedbackRequest originalFeedback = null;
269262

@@ -275,7 +268,9 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
275268
throw new BadArgException("Cannot update feedback request that does not exist");
276269
}
277270

278-
if (currentUser != null) currentUserEqualsRequestee = currentUser.getId().equals(originalFeedback.getRequesteeId());
271+
if (currentUserId != null) {
272+
currentUserEqualsRequestee = currentUserId.equals(originalFeedback.getRequesteeId());
273+
}
279274

280275
validateMembers(originalFeedback);
281276

@@ -360,7 +355,7 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
360355
sendNewRequestEmail(storedRequest);
361356
}
362357

363-
boolean currentUserSameAsRequestee = currentUser != null && currentUser.getId().equals(requestee.getId());
358+
boolean currentUserSameAsRequestee = currentUserId != null && currentUserId.equals(requestee.getId());
364359
// Send self-review completion email to supervisor and pdl if appropriate
365360
if (currentUserSameAsRequestee) {
366361
sendSelfReviewCompletionEmailToSupervisor(feedbackRequest);
@@ -411,15 +406,10 @@ public FeedbackRequest getById(UUID id) {
411406

412407
@Override
413408
public List<FeedbackRequest> findByValues(UUID creatorId, UUID requesteeId, UUID recipientId, LocalDate oldestDate, UUID reviewPeriodId, UUID templateId, UUID externalRecipientId, List<UUID> requesteeIds) {
414-
MemberProfile currentUser;
409+
final UUID currentUserId = currentUserServices.getCurrentUserId();
415410
List<FeedbackRequest> feedbackReqList = new ArrayList<>();
416411

417-
try {
418-
currentUser = currentUserServices.getCurrentUser();
419-
} catch (NotFoundException notFoundException) {
420-
currentUser = null;
421-
}
422-
if (currentUser == null && externalRecipientId == null) {
412+
if (currentUserId == null && externalRecipientId == null) {
423413
throw new PermissionException(NOT_AUTHORIZED_MSG);
424414
}
425415
if (requesteeIds != null && !requesteeIds.isEmpty()) {
@@ -434,21 +424,11 @@ public List<FeedbackRequest> findByValues(UUID creatorId, UUID requesteeId, UUID
434424
if (currentUserServices.isAdmin()) {
435425
visible = true;
436426
} else if (request != null) {
437-
MemberProfile currentUserLambda;
438-
UUID currentUserIdLambda;
439-
440-
try {
441-
currentUserLambda = currentUserServices.getCurrentUser();
442-
currentUserIdLambda = currentUserLambda.getId();
443-
} catch (NotFoundException notFoundException) {
444-
currentUserLambda = null;
445-
currentUserIdLambda = null;
446-
}
447-
if (currentUserIdLambda != null) {
448-
if (currentUserIdLambda.equals(request.getCreatorId())) visible = true;
449-
if (isSupervisor(request.getRequesteeId(), currentUserIdLambda)) visible = true;
450-
if (currentUserIdLambda.equals(request.getRecipientId())) visible = true;
451-
if (selfRevieweeIsCurrentUserReviewee(request, currentUserIdLambda)) visible = true;
427+
if (currentUserId != null) {
428+
if (currentUserId.equals(request.getCreatorId())) visible = true;
429+
if (isSupervisor(request.getRequesteeId(), currentUserId)) visible = true;
430+
if (currentUserId.equals(request.getRecipientId())) visible = true;
431+
if (selfRevieweeIsCurrentUserReviewee(request, currentUserId)) visible = true;
452432
} else {
453433
if (request.getExternalRecipientId() != null) visible = true;
454434
}
@@ -510,16 +490,11 @@ private boolean getIsPermitted(FeedbackRequest feedbackReq) {
510490
private boolean getIsPermittedForExternalRecipient(FeedbackRequest feedbackReq) {
511491
final LocalDate sendDate = feedbackReq.getSendDate();
512492
final LocalDate today = LocalDate.now();
513-
MemberProfile currentUser;
514-
try {
515-
currentUser = currentUserServices.getCurrentUser();
516-
} catch (NotFoundException notFoundException) {
517-
currentUser = null;
518-
}
493+
final UUID currentUserId = currentUserServices.getCurrentUserId();
519494

520495
// The recipient can only access the feedback request after it has been sent
521496
// Since request is for an external recipient, any logged in user can access it as long as they have feedback-reques-id
522-
if (sendDate.isAfter(today) && currentUser == null) {
497+
if (sendDate.isAfter(today) && currentUserId == null) {
523498
throw new PermissionException("You are not permitted to access this request before the send date.");
524499
}
525500
return true;
@@ -534,34 +509,19 @@ private boolean reassignIsPermitted(FeedbackRequest feedbackRequest) {
534509
}
535510

536511
private boolean isCurrentUserAdminOrOwner(FeedbackRequest feedbackRequest) {
537-
boolean isAdmin = currentUserServices.isAdmin();
538-
boolean currentUserIsSameAsCreator = false;
539-
UUID currentUserId;
540-
MemberProfile currentUser;
541-
try {
542-
currentUser = currentUserServices.getCurrentUser();
543-
} catch (NotFoundException notFoundException) {
544-
currentUser = null;
545-
}
546-
if (currentUser != null) {
547-
currentUserId = currentUserServices.getCurrentUser().getId();
548-
currentUserIsSameAsCreator = currentUserId.equals(feedbackRequest.getCreatorId());
549-
}
550-
return isAdmin || currentUserIsSameAsCreator;
512+
final UUID currentUserId = currentUserServices.getCurrentUserId();
513+
return currentUserServices.isAdmin() || (currentUserId != null && currentUserId.equals(feedbackRequest.getCreatorId()));
551514
}
552515

553516
private boolean updateSubmitDateIsPermitted(FeedbackRequest feedbackRequest) {
554-
MemberProfile currentUser;
555-
boolean isAdmin = false;
556517
try {
557-
currentUser = currentUserServices.getCurrentUser();
558-
isAdmin = currentUserServices.isAdmin();
518+
if (currentUserServices.isAdmin()) {
519+
return true;
520+
}
559521
} catch (NotFoundException notFoundException) {
560-
currentUser = null;
561-
562522
}
563-
if (isAdmin) return true;
564-
UUID currentUserId = currentUser != null ? currentUser.getId() : null;
523+
524+
final UUID currentUserId = currentUserServices.getCurrentUserId();
565525
if (((currentUserId != null && currentUserId.equals(feedbackRequest.getCreatorId())) && feedbackRequest.getSubmitDate() != null)) return true;
566526
if (currentUserId != null && currentUserId.equals(feedbackRequest.getRecipientId())) return true;
567527
if (feedbackRequest.getExternalRecipientId() != null) return true;

server/src/main/java/com/objectcomputing/checkins/services/feedback_template/template_question/TemplateQuestionServicesImpl.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ public List<TemplateQuestion> findByFields(UUID templateId) {
147147
// only admins or the creator of the template can add questions to it
148148
public boolean createIsPermitted(UUID templateCreatorId) {
149149
boolean isAdmin = currentUserServices.isAdmin();
150-
UUID currentUserId = currentUserServices.getCurrentUser().getId();
150+
UUID currentUserId = currentUserServices.getCurrentUserId();
151151
return currentUserId != null && (isAdmin || currentUserId.equals(templateCreatorId));
152152
}
153153

@@ -160,22 +160,8 @@ public boolean deleteIsPermitted(UUID templateCreatorId) {
160160
}
161161

162162
public boolean getIsPermitted(FeedbackTemplate feedbackTemplate) {
163-
UUID currentUserId;
164-
MemberProfile currentUser;
165-
166-
try {
167-
currentUser = currentUserServices.getCurrentUser();
168-
currentUserId = currentUser.getId();
169-
} catch (NotFoundException e) {
170-
currentUser = null;
171-
currentUserId = null;
172-
}
173-
if (currentUserId != null) return true;
174-
175-
boolean templateForExternalRecipient = (feedbackTemplate != null && feedbackTemplate.getIsForExternalRecipient() == true);
176-
if (templateForExternalRecipient) return true;
177-
178-
return false;
163+
return (currentUserServices.getCurrentUserId() != null) ||
164+
(feedbackTemplate != null && feedbackTemplate.getIsForExternalRecipient());
179165
}
180166

181167
}

server/src/main/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServices.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import com.objectcomputing.checkins.services.permissions.Permission;
55
import com.objectcomputing.checkins.services.role.RoleType;
66

7+
import java.util.UUID;
8+
79
public interface CurrentUserServices {
810

911
MemberProfile findOrSaveUser(String firstName, String lastName, String workEmail);
@@ -14,6 +16,8 @@ public interface CurrentUserServices {
1416

1517
boolean isAdmin();
1618

19+
UUID getCurrentUserId();
20+
1721
MemberProfile getCurrentUser();
1822

1923
}

server/src/main/java/com/objectcomputing/checkins/services/memberprofile/currentuser/CurrentUserServicesImpl.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import java.time.LocalDate;
1919
import java.util.Optional;
2020
import java.util.List;
21+
import java.util.UUID;
2122

2223
@Singleton
2324
public class CurrentUserServicesImpl implements CurrentUserServices {
@@ -68,14 +69,25 @@ public boolean isAdmin() {
6869
return hasRole(RoleType.ADMIN);
6970
}
7071

71-
public MemberProfile getCurrentUser() {
72+
@Override
73+
public UUID getCurrentUserId() {
7274
if (securityService != null) {
7375
Optional<Authentication> auth = securityService.getAuthentication();
7476
if (auth.isPresent() && auth.get().getAttributes().get("email") != null) {
7577
String workEmail = auth.get().getAttributes().get("email").toString();
76-
return memberProfileRepo.findByWorkEmail(workEmail).orElse(null);
78+
MemberProfile profile = memberProfileRepo.findByWorkEmail(workEmail).orElse(null);
79+
return profile == null ? null : profile.getId();
7780
}
7881
}
82+
return null;
83+
}
84+
85+
@Override
86+
public MemberProfile getCurrentUser() {
87+
UUID currentUserId = getCurrentUserId();
88+
if (currentUserId != null) {
89+
return memberProfileRepo.findById(currentUserId).orElse(null);
90+
}
7991

8092
throw new NotFoundException("No active members in the system");
8193
}

server/src/main/java/com/objectcomputing/checkins/services/reviews/ReviewPeriodServicesImpl.java

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -180,11 +180,13 @@ public ReviewPeriod update(@NotNull ReviewPeriod reviewPeriod) {
180180
if (period.getReviewStatus() == ReviewStatus.OPEN) {
181181
// If the review period has been updated and is now open, we need
182182
// to create feedback requests for all involved in the review period
183-
Set<ReviewAssignment> assignments = reviewAssignmentRepository.findByReviewPeriodId(period.getId());
183+
Set<ReviewAssignment> assignments =
184+
reviewAssignmentRepository.findByReviewPeriodId(period.getId());
184185
UUID reviewTemplateId = period.getReviewTemplateId();
185186
UUID selfReviewTemplateId = period.getSelfReviewTemplateId();
186187
LocalDate closeDate = period.getCloseDate().toLocalDate();
187-
LocalDate selfReviewCloseDate = period.getSelfReviewCloseDate().toLocalDate();
188+
LocalDate selfReviewCloseDate =
189+
period.getSelfReviewCloseDate().toLocalDate();
188190

189191
// Log template id's that were not provided to the review period.
190192
// This is the reason a feedback request will not be created.
@@ -344,14 +346,13 @@ private UUID findCreatorId(UUID memberId) {
344346
return profile.isEmpty() ? memberId : profile.get(0).getId();
345347
}
346348

347-
private void createReviewRequest(
348-
ReviewPeriod period,
349-
UUID creatorId,
350-
UUID revieweeId,
351-
UUID reviewerId,
352-
UUID templateId,
353-
LocalDate dueDate, UUID externalRecipientId
354-
) {
349+
private void createReviewRequest(ReviewPeriod period,
350+
UUID creatorId,
351+
UUID revieweeId,
352+
UUID reviewerId,
353+
UUID templateId,
354+
LocalDate dueDate,
355+
UUID externalRecipientId) {
355356
try {
356357
LocalDate sendDate = LocalDate.now();
357358
FeedbackRequest request = new FeedbackRequest(
@@ -437,7 +438,9 @@ void sendSelfReviewEmail(UUID reviewPeriodId, SelfReviewDate date) {
437438
Set<MemberProfile> recipients = new HashSet<>();
438439
String templateId = null;
439440
List<FeedbackRequest> requests =
440-
feedbackRequestRepository.findByValues(null, null, null, null, reviewPeriodId.toString(), templateId, null);
441+
feedbackRequestRepository.findByValues(null, null, null, null,
442+
reviewPeriodId.toString(),
443+
templateId, null);
441444
for (FeedbackRequest request : requests) {
442445
if (request.getRecipientId().equals(request.getRequesteeId())) {
443446
Optional<MemberProfile> requesteeProfile =

server/src/main/resources/db/common/V202410241018__feedback_external_recipient.sql renamed to server/src/main/resources/db/common/V120__feedback_external_recipient.sql

File renamed without changes.

0 commit comments

Comments
 (0)