Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,23 @@
import jakarta.ws.rs.core.Response;
import java.util.List;
import org.broadinstitute.consent.http.enumeration.UserRoles;
import org.broadinstitute.consent.http.models.AuthUser;
import org.broadinstitute.consent.http.models.DuosUser;
import org.broadinstitute.consent.http.models.User;
import org.broadinstitute.consent.http.rules.AuditPageResults;
import org.broadinstitute.consent.http.rules.DACAutomationRule;
import org.broadinstitute.consent.http.service.DACAutomationRuleService;
import org.broadinstitute.consent.http.service.DacService;
import org.broadinstitute.consent.http.service.UserService;

@Path("api/dac/")
public class DACAutomationRuleResource extends Resource {

private final DACAutomationRuleService ruleService;
private final DacService dacService;
private final UserService userService;

@Inject
public DACAutomationRuleResource(
DACAutomationRuleService ruleService, DacService dacService, UserService userService) {
public DACAutomationRuleResource(DACAutomationRuleService ruleService, DacService dacService) {
this.ruleService = ruleService;
this.dacService = dacService;
this.userService = userService;
}

@GET
Expand All @@ -56,9 +51,9 @@ public Response getAllRules(@Auth DuosUser duosUser) {
@Path("{dacId}/rules")
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({Resource.ADMIN, Resource.CHAIRPERSON})
public Response getAvailableRules(@Auth AuthUser authUser, @PathParam("dacId") Integer dacId) {
public Response getAvailableRules(@Auth DuosUser duosUser, @PathParam("dacId") Integer dacId) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
validateAdminOrChairForDAC(user, dacId);

if (dacService.findById(dacId) == null) {
Expand All @@ -78,12 +73,12 @@ public Response getAvailableRules(@Auth AuthUser authUser, @PathParam("dacId") I
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({Resource.ADMIN, Resource.CHAIRPERSON})
public Response getDacRuleAuditRecords(
@Auth AuthUser authUser,
@Auth DuosUser duosUser,
@PathParam("dacId") Integer dacId,
@QueryParam("page") Integer page,
@QueryParam("pageSize") Integer pageSize) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
validateAdminOrChairForDAC(user, dacId);

if (dacService.findById(dacId) == null) {
Expand All @@ -103,11 +98,11 @@ public Response getDacRuleAuditRecords(
@Produces(MediaType.APPLICATION_JSON)
@RolesAllowed({Resource.CHAIRPERSON})
public Response toggleRule(
@Auth AuthUser authUser,
@Auth DuosUser duosUser,
@PathParam("dacId") Integer dacId,
@PathParam("ruleId") Integer ruleId) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
validateIsChairOfDAC(user, dacId);

if (dacService.findById(dacId) == null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import java.util.Objects;
import java.util.Optional;
import org.broadinstitute.consent.http.enumeration.UserRoles;
import org.broadinstitute.consent.http.models.AuthUser;
import org.broadinstitute.consent.http.models.Dac;
import org.broadinstitute.consent.http.models.DacDatasetExternalizationRequest;
import org.broadinstitute.consent.http.models.DacDatasetExternalizationResponse;
Expand Down Expand Up @@ -51,7 +50,7 @@ public DacResource(DacService dacService, DatasetService datasetService) {
@Produces("application/json")
@RolesAllowed({ADMIN, MEMBER, CHAIRPERSON, RESEARCHER})
public Response findAll(
@Auth AuthUser authUser, @QueryParam("withUsers") Optional<Boolean> withUsers) {
@Auth DuosUser duosUser, @QueryParam("withUsers") Optional<Boolean> withUsers) {
try {
final Boolean includeUsers = withUsers.orElse(true);
List<Dac> dacs = dacService.findDacsWithMembersOption(includeUsers);
Expand Down Expand Up @@ -143,7 +142,7 @@ public Response updateDac(@Auth DuosUser duosUser, String json) {
@Path("{dacId}")
@Produces("application/json")
@RolesAllowed({ADMIN, MEMBER, CHAIRPERSON})
public Response findDacById(@Auth AuthUser authUser, @PathParam("dacId") Integer dacId) {
public Response findDacById(@Auth DuosUser duosUser, @PathParam("dacId") Integer dacId) {
try {
Dac dac = findDacOrThrow(dacId);
return Response.ok().entity(unmarshal(dac)).build();
Expand Down Expand Up @@ -264,7 +263,7 @@ public Response findAllDacDatasets(@Auth DuosUser duosUser, @PathParam("dacId")
@Path("users/{term}")
@Produces("application/json")
@RolesAllowed({ADMIN, MEMBER, CHAIRPERSON})
public Response filterUsers(@Auth AuthUser authUser, @PathParam("term") String term) {
public Response filterUsers(@Auth DuosUser duosUser, @PathParam("term") String term) {
try {
List<User> users = dacService.findAllDACUsersBySearchString(term);
return Response.ok().entity(users).build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.broadinstitute.consent.http.enumeration.UserRoles;
import org.broadinstitute.consent.http.exceptions.LibraryCardRequiredException;
import org.broadinstitute.consent.http.exceptions.SubmittedDARCannotBeEditedException;
import org.broadinstitute.consent.http.models.AuthUser;
import org.broadinstitute.consent.http.models.Dac;
import org.broadinstitute.consent.http.models.DataAccessAgreement;
import org.broadinstitute.consent.http.models.DataAccessRequest;
Expand Down Expand Up @@ -117,9 +116,9 @@ public Response getDataAccessRequests(@Auth DuosUser duosUser) {
@RolesAllowed(RESEARCHER)
@Path("/v2")
public Response createDataAccessRequest(
@Auth AuthUser authUser, @Context Request request, @Context UriInfo info, String dar) {
@Auth DuosUser duosUser, @Context Request request, @Context UriInfo info, String dar) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();

DataAccessRequest payload = populateDarFromJsonString(user, dar);
DataAccessRequest newDar =
Expand Down Expand Up @@ -205,9 +204,9 @@ public Response getDatasetDaaSnapshotsByReferenceId(
@Produces("application/json")
@RolesAllowed(RESEARCHER)
public Response updateByReferenceId(
@Auth AuthUser authUser, @PathParam("referenceId") String referenceId, String dar) {
@Auth DuosUser duosUser, @PathParam("referenceId") String referenceId, String dar) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest originalDar = dataAccessRequestService.findByReferenceId(referenceId);
checkAuthorizedUpdateUser(user, originalDar);
DataAccessRequestData data = DataAccessRequestData.fromString(dar);
Expand All @@ -228,9 +227,9 @@ public Response updateByReferenceId(
@Produces("application/json")
@Path("/v2/draft")
@RolesAllowed(RESEARCHER)
public Response getDraftDataAccessRequests(@Auth AuthUser authUser) {
public Response getDraftDataAccessRequests(@Auth DuosUser duosUser) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
List<DataAccessRequest> draftDars =
dataAccessRequestService.findAllDraftDataAccessRequestsByUser(user.getUserId());
return Response.ok().entity(draftDars).build();
Expand All @@ -243,9 +242,9 @@ public Response getDraftDataAccessRequests(@Auth AuthUser authUser) {
@Produces("application/json")
@Path("/v2/draft/{referenceId}")
@RolesAllowed(RESEARCHER)
public Response getDraftDar(@Auth AuthUser authUser, @PathParam("referenceId") String id) {
public Response getDraftDar(@Auth DuosUser duosUser, @PathParam("referenceId") String id) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest dar = dataAccessRequestService.findByReferenceId(id);
if (dar.getUserId().equals(user.getUserId())) {
return Response.ok().entity(dar).build();
Expand All @@ -262,9 +261,9 @@ public Response getDraftDar(@Auth AuthUser authUser, @PathParam("referenceId") S
@Path("/v2/draft")
@RolesAllowed(RESEARCHER)
public Response createDraftDataAccessRequest(
@Auth AuthUser authUser, @Context UriInfo info, String dar) {
@Auth DuosUser duosUser, @Context UriInfo info, String dar) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest newDar = populateDarFromJsonString(user, dar);
DataAccessRequest result =
dataAccessRequestService.insertDraftDataAccessRequest(user, newDar);
Expand All @@ -281,9 +280,9 @@ public Response createDraftDataAccessRequest(
@Path("/v2/draft/{referenceId}")
@RolesAllowed(RESEARCHER)
public Response updatePartialDataAccessRequest(
@Auth AuthUser authUser, @PathParam("referenceId") String referenceId, String dar) {
@Auth DuosUser duosUser, @PathParam("referenceId") String referenceId, String dar) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest originalDar = dataAccessRequestService.findByReferenceId(referenceId);
checkAuthorizedUpdateUser(user, originalDar);
DataAccessRequestData data = DataAccessRequestData.fromString(dar);
Expand Down Expand Up @@ -333,12 +332,12 @@ public Response getIrbDocument(
@Path("/v2/{referenceId}/irbDocument")
@RolesAllowed({RESEARCHER})
public Response uploadIrbDocument(
@Auth AuthUser authUser,
@Auth DuosUser duosUser,
@PathParam("referenceId") String referenceId,
@FormDataParam("file") InputStream uploadInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest dar = getDarById(referenceId);
checkAuthorizedUpdateUser(user, dar);
DataAccessRequest updatedDar =
Expand Down Expand Up @@ -376,7 +375,7 @@ public Response approveCloseout(
@Path("/v2/progress_report/{parentReferenceId}")
@RolesAllowed({RESEARCHER})
public Response postProgressReport(
@Auth AuthUser authUser,
@Auth DuosUser duosUser,
@Context Request request,
@PathParam("parentReferenceId") String parentReferenceId,
@FormDataParam("dar") String dar,
Expand All @@ -385,7 +384,7 @@ public Response postProgressReport(
@FormDataParam("ethicsApprovalRequiredFile") InputStream ethicsInputStream,
@FormDataParam("ethicsApprovalRequiredFile") FormDataContentDisposition ethicsFileDetails) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
// added here because other dataAccessRequestServices calls are invoked that do not normally
// require this sequence. hasValidActiveERACredentials will also check for a LC so no
// additional LC check needed.
Expand Down Expand Up @@ -522,12 +521,12 @@ public Response getCollaborationDocument(
@Path("/v2/{referenceId}/collaborationDocument")
@RolesAllowed({RESEARCHER})
public Response uploadCollaborationDocument(
@Auth AuthUser authUser,
@Auth DuosUser duosUser,
@PathParam("referenceId") String referenceId,
@FormDataParam("file") InputStream uploadInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail) {
try {
User user = findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
DataAccessRequest dar = getDarById(referenceId);
checkAuthorizedUpdateUser(user, dar);
DataAccessRequest updatedDar =
Expand All @@ -554,14 +553,6 @@ public Response deleteDar(@Auth DuosUser duosUser, @PathParam("referenceId") Str
}
}

private User findUserByEmail(String email) {
User user = userService.findUserByEmail(email);
if (user == null) {
throw new NotFoundException("Unable to find User with the provided email: " + email);
}
return user;
}

private DataAccessRequest populateDarFromJsonString(User user, String json) {
DataAccessRequest newDar = new DataAccessRequest();
DataAccessRequestData data = DataAccessRequestData.populateDARData(json);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,6 @@
import org.broadinstitute.consent.http.cloudstore.GCSService;
import org.broadinstitute.consent.http.enumeration.UserRoles;
import org.broadinstitute.consent.http.exceptions.UnprocessableEntityException;
import org.broadinstitute.consent.http.models.AuthUser;
import org.broadinstitute.consent.http.models.DataUse;
import org.broadinstitute.consent.http.models.Dataset;
import org.broadinstitute.consent.http.models.DatasetPatch;
Expand Down Expand Up @@ -107,7 +106,7 @@
* With that object, we can fully create datasets from the provided values.
*/
public Response createDatasetRegistration(
@Auth AuthUser authUser, FormDataMultiPart multipart, @FormDataParam("dataset") String json) {
@Auth DuosUser duosUser, FormDataMultiPart multipart, @FormDataParam("dataset") String json) {
try {
if (json == null || json.isEmpty()) {
throw new BadRequestException("Dataset is required");
Expand All @@ -120,7 +119,9 @@
throw new BadRequestException("Please correct the following fields:\n" + errorMessage);
}

User user = userService.findUserByEmail(authUser.getEmail());
DatasetRegistrationSchemaV1 registration =

Check warning on line 122 in src/main/java/org/broadinstitute/consent/http/resources/DatasetResource.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Remove this unused "registration" local variable.

See more on https://sonarcloud.io/project/issues?id=DataBiosphere_consent&issues=AZ9xU8pnL4Bg_WLKR1JO&open=AZ9xU8pnL4Bg_WLKR1JO&pullRequest=2979
GsonUtil.getInstance().fromJson(json, DatasetRegistrationSchemaV1.class);

Check warning on line 123 in src/main/java/org/broadinstitute/consent/http/resources/DatasetResource.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Remove this useless assignment to local variable "registration".

See more on https://sonarcloud.io/project/issues?id=DataBiosphere_consent&issues=AZ9xU8pnL4Bg_WLKR1JN&open=AZ9xU8pnL4Bg_WLKR1JN&pullRequest=2979
User user = duosUser.getUser();

// key: field name (not file name), value: file body part
Map<String, FormDataBodyPart> files = extractFilesFromMultiPart(multipart);
Expand Down Expand Up @@ -406,7 +407,7 @@
@POST
@Path("/index")
@RolesAllowed(ADMIN)
public Response indexDatasets(@Auth AuthUser authUser) {
public Response indexDatasets(@Auth DuosUser duosUser) {
try {
var datasetIds = datasetService.findAllDatasetIds();
StreamingOutput indexResponse = elasticSearchService.indexDatasetIds(datasetIds);
Expand All @@ -419,7 +420,7 @@
@POST
@Path("/index/{datasetId}")
@RolesAllowed(ADMIN)
public Response indexDataset(@Auth AuthUser authUser, @PathParam("datasetId") Integer datasetId) {
public Response indexDataset(@Auth DuosUser duosUser, @PathParam("datasetId") Integer datasetId) {
try {
return elasticSearchService.indexDataset(datasetId);
} catch (Exception e) {
Expand All @@ -431,9 +432,9 @@
@Path("/index/{datasetId}")
@RolesAllowed(ADMIN)
public Response deleteDatasetIndex(
@Auth AuthUser authUser, @PathParam("datasetId") Integer datasetId) {
@Auth DuosUser duosUser, @PathParam("datasetId") Integer datasetId) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
return elasticSearchService.deleteIndex(datasetId, user.getUserId());
} catch (Exception e) {
return createExceptionResponse(e);
Expand Down Expand Up @@ -475,9 +476,9 @@
@RolesAllowed(ADMIN)
@Path("/{id}/datause")
public Response updateDatasetDataUse(
@Auth AuthUser authUser, @PathParam("id") Integer id, String dataUseJson) {
@Auth DuosUser duosUser, @PathParam("id") Integer id, String dataUseJson) {
try {
User user = userService.findUserByEmail(authUser.getEmail());
User user = duosUser.getUser();
// TODO: Replace new Gson() with GsonUtil.buildGson() — deferred pending Gson configuration
// investigation
Gson gson = new Gson();
Expand Down
Loading
Loading