Skip to content

Commit ff42a4e

Browse files
committed
Addressed Michael's review, updating Permissions. Migration versions and sendNotification function remain outstanding issues.
1 parent 05143b5 commit ff42a4e

File tree

7 files changed

+33
-4
lines changed

7 files changed

+33
-4
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import com.objectcomputing.checkins.services.memberprofile.MemberProfileUtils;
1212
import com.objectcomputing.checkins.services.memberprofile.MemberProfileServices;
1313
import com.objectcomputing.checkins.services.memberprofile.currentuser.CurrentUserServices;
14+
import com.objectcomputing.checkins.services.permissions.Permission;
1415
import com.objectcomputing.checkins.services.reviews.ReviewAssignment;
1516
import com.objectcomputing.checkins.services.reviews.ReviewAssignmentRepository;
1617
import com.objectcomputing.checkins.services.reviews.ReviewPeriod;
@@ -170,6 +171,15 @@ public FeedbackRequest update(FeedbackRequestUpdateDTO feedbackRequestUpdateDTO)
170171
throw new BadArgException("Cannot update feedback request that does not exist");
171172
}
172173

174+
if (feedbackRequest.isDenied()) {
175+
UUID currentUserId = currentUserServices.getCurrentUser().getId();
176+
if (!currentUserId.equals(originalFeedback.getRecipientId())) {
177+
if (!currentUserServices.hasPermission(Permission.CAN_ADMINISTER_FEEDBACK_REQUESTS)) {
178+
throw new PermissionException(NOT_AUTHORIZED_MSG);
179+
}
180+
}
181+
}
182+
173183
validateMembers(originalFeedback);
174184

175185
Set<ReviewAssignment> reviewAssignmentsSet = Set.of();

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
@@ -2,6 +2,8 @@
22

33
import com.objectcomputing.checkins.services.memberprofile.MemberProfile;
44
import com.objectcomputing.checkins.services.role.RoleType;
5+
import com.objectcomputing.checkins.services.permissions.Permission;
6+
import com.objectcomputing.checkins.exceptions.PermissionException;
57

68
public interface CurrentUserServices {
79

@@ -13,4 +15,6 @@ public interface CurrentUserServices {
1315

1416
MemberProfile getCurrentUser();
1517

18+
boolean hasPermission(Permission permission);
19+
1620
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.objectcomputing.checkins.exceptions.NotFoundException;
55
import com.objectcomputing.checkins.services.memberprofile.MemberProfile;
66
import com.objectcomputing.checkins.services.memberprofile.MemberProfileRepository;
7+
import com.objectcomputing.checkins.services.permissions.Permission;
78
import com.objectcomputing.checkins.services.role.Role;
89
import com.objectcomputing.checkins.services.role.RoleServices;
910
import com.objectcomputing.checkins.services.role.RoleType;
@@ -84,4 +85,10 @@ private MemberProfile saveNewUser(String firstName, String lastName, String work
8485

8586
return createdMember;
8687
}
88+
89+
@Override
90+
public boolean hasPermission(Permission permission) {
91+
// TODO Auto-generated method stub
92+
throw new UnsupportedOperationException("Unimplemented method 'hasPermission'");
93+
}
8794
}

server/src/main/java/com/objectcomputing/checkins/services/notification/NotificationController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ public NotificationController(NotificationService notificationService) {
3737
* @return {@link HttpResponse} with status indicating success or error
3838
*/
3939
@Post("/send")
40-
@RequiredPermission(Permission.CAN_SEND_NOTIFICATION)
40+
@RequiredPermission(Permission.CAN_SEND_NOTIFICATIONS)
4141
public HttpResponse<Void> sendNotification(@Body @Valid @NotNull NotificationDTO notificationDTO) {
4242
notificationService.sendNotification(notificationDTO.getUserId(), notificationDTO.getMessage());
4343
return HttpResponse.ok();

server/src/main/java/com/objectcomputing/checkins/services/permissions/Permission.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ public enum Permission {
1414
CAN_CREATE_KUDOS("Create kudos", "Feedback"),
1515
CAN_ADMINISTER_KUDOS("Administer kudos", "Feedback"),
1616
CAN_VIEW_FEEDBACK_ANSWER("View feedback answers", "Feedback"),
17-
CAN_SEND_EMAIL("Send email", "Feedback"),
18-
CAN_SEND_NOTIFICATION("Send notification", "Feedback"),
17+
CAN_SEND_EMAIL("Send email", "Notifications"),
18+
CAN_SEND_NOTIFICATIONS("Send notifications", "Notifications"),
1919
CAN_DELETE_ORGANIZATION_MEMBERS("Delete organization members", "User Management"),
2020
CAN_CREATE_ORGANIZATION_MEMBERS("Create organization members", "User Management"),
2121
CAN_IMPERSONATE_MEMBERS("Impersonate organization members", "Security"),
@@ -61,7 +61,9 @@ public enum Permission {
6161
CAN_ADMINISTER_VOLUNTEERING_ORGANIZATIONS("Update volunteering organizations", "Volunteering"),
6262
CAN_ADMINISTER_VOLUNTEERING_RELATIONSHIPS("Update volunteering relationships", "Volunteering"),
6363
CAN_ADMINISTER_VOLUNTEERING_EVENTS("Update volunteering events", "Volunteering"),
64-
CAN_ADMINISTER_DOCUMENTATION("Administer documentation and role documentation", "Documentation");
64+
CAN_ADMINISTER_DOCUMENTATION("Administer documentation and role documentation", "Documentation"),
65+
CAN_ADMINISTER_FEEDBACK_REQUESTS("Administer feedback requests", "Feedback");
66+
6567

6668
private final String description;
6769
private final String category;

server/src/main/resources/db/dev/R__Load_testing_data.sql

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -898,6 +898,11 @@ insert into role_permissions
898898
values
899899
('e8a4fff8-e984-4e59-be84-a713c9fa8d23', 'CAN_SEND_EMAIL');
900900

901+
insert into role_permissions
902+
(roleid, permission)
903+
values
904+
('e8a4fff8-e984-4e59-be84-a713c9fa8d23', 'CAN_ADMINISTER_FEEDBACK_REQUESTS');
905+
901906
-- PDL Permissions
902907
insert into role_permissions
903908
(roleid, permission)

server/src/test/java/com/objectcomputing/checkins/services/fixture/PermissionFixture.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public interface PermissionFixture extends RolePermissionFixture {
9494
Permission.CAN_ADMINISTER_VOLUNTEERING_RELATIONSHIPS,
9595
Permission.CAN_ADMINISTER_VOLUNTEERING_EVENTS,
9696
Permission.CAN_ADMINISTER_DOCUMENTATION,
97+
Permission.CAN_ADMINISTER_FEEDBACK_REQUESTS,
9798
Permission.CAN_ADMINISTER_KUDOS,
9899
Permission.CAN_CREATE_KUDOS,
99100
Permission.CAN_IMPERSONATE_MEMBERS,

0 commit comments

Comments
 (0)