Skip to content

Commit

Permalink
separated 'admins-and-groupings' into 2 endpoints 'admins' & 'all-gro…
Browse files Browse the repository at this point in the history
…upings'
  • Loading branch information
mikhail-shkaralevich committed Dec 20, 2023
1 parent bac2d31 commit 247c598
Show file tree
Hide file tree
Showing 15 changed files with 314 additions and 162 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@

import edu.hawaii.its.api.groupings.GroupingAddResult;
import edu.hawaii.its.api.groupings.GroupingAddResults;
import edu.hawaii.its.api.groupings.GroupingAdmins;
import edu.hawaii.its.api.groupings.GroupingPaths;
import edu.hawaii.its.api.groupings.GroupingDescription;
import edu.hawaii.its.api.groupings.GroupingGroupMembers;
import edu.hawaii.its.api.groupings.GroupingGroupsMembers;
Expand All @@ -35,6 +37,7 @@
import edu.hawaii.its.api.groupings.GroupingReplaceGroupMembersResult;
import edu.hawaii.its.api.groupings.GroupingSyncDestinations;
import edu.hawaii.its.api.groupings.GroupingUpdateDescriptionResult;
import edu.hawaii.its.api.service.GroupingsService;
import edu.hawaii.its.api.service.AsyncJobsManager;
import edu.hawaii.its.api.service.GroupingAssignmentService;
import edu.hawaii.its.api.service.GroupingAttributeService;
Expand All @@ -43,7 +46,6 @@
import edu.hawaii.its.api.service.MemberService;
import edu.hawaii.its.api.service.MembershipService;
import edu.hawaii.its.api.service.UpdateMemberService;
import edu.hawaii.its.api.type.AdminListsHolder;
import edu.hawaii.its.api.type.GroupingPath;
import edu.hawaii.its.api.type.GroupingsServiceResult;
import edu.hawaii.its.api.type.Membership;
Expand Down Expand Up @@ -72,6 +74,9 @@ public class GroupingsRestControllerv2_1 {
@Autowired
private GroupingAssignmentService groupingAssignmentService;

@Autowired
private GroupingsService groupingsService;

@Autowired
private MemberAttributeService memberAttributeService;

Expand Down Expand Up @@ -107,15 +112,27 @@ public ResponseEntity<String> hello() {
}

/**
* Get a list of all admins and a list of all groupings.
* Get a list of all admins.
*/
@GetMapping(value = "/grouping-admins")
@ResponseBody
public ResponseEntity<GroupingAdmins> groupingAdmins(@RequestHeader(CURRENT_USER_KEY) String currentUser) {
logger.info("Entered REST groupingAdmins...");
return ResponseEntity
.ok()
.body(groupingAssignmentService.groupingAdmins(currentUser));
}

/**
* Get a list of all groupings.
*/
@GetMapping(value = "/admins-and-groupings")
@GetMapping(value = "/all-groupings")
@ResponseBody
public ResponseEntity<AdminListsHolder> adminsGroupings(@RequestHeader(CURRENT_USER_KEY) String currentUser) {
logger.info("Entered REST adminsGroupings...");
public ResponseEntity<GroupingPaths> allGroupings(@RequestHeader(CURRENT_USER_KEY) String currentUser) {
logger.info("Entered REST allGroupings...");
return ResponseEntity
.ok()
.body(groupingAssignmentService.adminsGroupings(currentUser));
.body(groupingAssignmentService.groupingPaths(currentUser));
}

/**
Expand Down
32 changes: 32 additions & 0 deletions src/main/java/edu/hawaii/its/api/groupings/GroupingAdmins.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package edu.hawaii.its.api.groupings;

import edu.hawaii.its.api.type.EmptyGroup;
import edu.hawaii.its.api.type.Group;

public class GroupingAdmins implements GroupingResult {

private Group adminGroup;
private String resultCode;

private final String groupPath = "uh-settings:groupingAdmins";

public GroupingAdmins() {
this.adminGroup = new EmptyGroup();
this.resultCode = "FAILURE";
}

public GroupingAdmins(Group adminGroup) {
this.adminGroup = adminGroup;
this.resultCode = "SUCCESS";
}

public Group getAdminGroup() { return adminGroup; }

public void setAdminGroup(Group adminGroup) { this.adminGroup = adminGroup; }

@Override
public String getResultCode() { return this.resultCode; }

@Override
public String getGroupPath() { return this.groupPath; }
}
36 changes: 36 additions & 0 deletions src/main/java/edu/hawaii/its/api/groupings/GroupingPaths.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package edu.hawaii.its.api.groupings;

import edu.hawaii.its.api.type.GroupingPath;

import java.util.ArrayList;
import java.util.List;

public class GroupingPaths implements GroupingResult {

private List<GroupingPath> groupingPaths;
private String resultCode;

private final String groupPath = "uh-settings:groupingAdmins";

public GroupingPaths() {
groupingPaths = new ArrayList<>();
this.resultCode = "FAILURE";
}

public GroupingPaths(List<GroupingPath> groupingPaths) {
this.groupingPaths = groupingPaths;
this.resultCode = "SUCCESS";
}

public void addGroupingPath(GroupingPath groupingPaths) { this.groupingPaths.add(groupingPaths); }

public List<GroupingPath> getGroupingPaths() { return this.groupingPaths; }

public void setGroupingPaths(List<GroupingPath> groupingPaths) { this.groupingPaths = groupingPaths; }

@Override
public String getResultCode() { return this.resultCode; }

@Override
public String getGroupPath() { return this.groupPath; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,20 @@
import static edu.hawaii.its.api.service.PathFilter.parentGroupingPath;
import static edu.hawaii.its.api.service.PathFilter.pathHasInclude;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;

import edu.hawaii.its.api.exception.AccessDeniedException;
import edu.hawaii.its.api.groupings.GroupingAdmins;
import edu.hawaii.its.api.groupings.GroupingPaths;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import edu.hawaii.its.api.exception.AccessDeniedException;
import edu.hawaii.its.api.groupings.GroupingGroupMember;
import edu.hawaii.its.api.groupings.GroupingGroupMembers;
import edu.hawaii.its.api.type.AdminListsHolder;
import edu.hawaii.its.api.type.Group;
import edu.hawaii.its.api.type.GroupType;
import edu.hawaii.its.api.type.GroupingPath;
Expand All @@ -41,29 +37,35 @@ public class GroupingAssignmentService {
public static final Log logger = LogFactory.getLog(GroupingAssignmentService.class);

@Autowired
private GrouperApiService grouperApiService;
private MemberService memberService;

@Autowired
private MemberService memberService;
private GrouperApiService grouperApiService;

@Autowired
private GroupingsService groupingsService;

/**
* A list of grouping paths for all groupings, restricted to admins' use only.
*/
public GroupingPaths groupingPaths(String adminUhIdentifier) {
logger.info(String.format("allGroupings; adminUhIdentifier: %s;", adminUhIdentifier));
if (!memberService.isAdmin(adminUhIdentifier)) {
throw new AccessDeniedException();
}
return new GroupingPaths(groupingsService.allGroupingPaths());
}

/**
* Returns an adminLists object containing the list of all admins and all groupings.
* Returns groupingsAdmins object containing the list of all admins.
*/
public AdminListsHolder adminsGroupings(String adminUhIdentifier) {
logger.info(String.format("adminsGroupings; adminUhIdentifier: %s;", adminUhIdentifier));
public GroupingAdmins groupingAdmins (String adminUhIdentifier) {
logger.info(String.format("groupingAdmins; adminUhIdentifier: %s;", adminUhIdentifier));
if (!memberService.isAdmin(adminUhIdentifier)) {
throw new AccessDeniedException();
}
AdminListsHolder adminListsHolder = new AdminListsHolder();
List<String> adminGrouping = Arrays.asList(GROUPING_ADMINS);
Group admin = getMembers(adminUhIdentifier, adminGrouping).get(GROUPING_ADMINS);
adminListsHolder.setAllGroupingPaths(groupingsService.allGroupingPaths());
adminListsHolder.setAdminGroup(admin);
return adminListsHolder;
edu.hawaii.its.api.type.Group admin = this.getMembers(adminUhIdentifier, Arrays.asList(GROUPING_ADMINS)).get(GROUPING_ADMINS);
return new GroupingAdmins(admin);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import java.util.function.Predicate;
import java.util.stream.Collectors;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
Expand All @@ -25,9 +27,14 @@
@Service
public class GroupingsService {

@Value("${groupings.api.grouping_admins}")
private String GROUPING_ADMINS;

@Value("${groupings.api.trio}")
private String TRIO;

public static final Log logger = LogFactory.getLog(GroupingAssignmentService.class);

@Autowired
private GroupPathService groupPathService;

Expand Down
34 changes: 0 additions & 34 deletions src/main/java/edu/hawaii/its/api/type/AdminListsHolder.java

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/resources/application-localhost.properties
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ spring.config.activate.on-profile=localhost
spring.config.import=optional:file:${user.home}/.${user.name}-conf/uh-groupings-api-overrides.properties

# =========================================================================
app.environment=localhost
app.environment=localhost
Loading

0 comments on commit 247c598

Please sign in to comment.