From 743d799590b31cb85a60a104159ed8696418e18f Mon Sep 17 00:00:00 2001 From: Jim Myers Date: Sat, 15 Feb 2025 16:26:50 -0500 Subject: [PATCH] support flag in API --- .../harvard/iq/dataverse/api/Datasets.java | 21 +++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java index a197171ac1b..2a7a696e1e4 100644 --- a/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java +++ b/src/main/java/edu/harvard/iq/dataverse/api/Datasets.java @@ -2554,14 +2554,27 @@ public Response returnToAuthor(@Context ContainerRequestContext crc, @PathParam( @AuthRequired @Path("{id}/curationStatus") @Produces(MediaType.APPLICATION_JSON) - public Response getCurationStatus(@Context ContainerRequestContext crc, - @PathParam("id") String idSupplied, - @QueryParam("includeHistory") boolean includeHistory) { + public Response getCurationStatus(@Context ContainerRequestContext crc, + @PathParam("id") String idSupplied, + @QueryParam("includeHistory") boolean includeHistory) { try { Dataset ds = findDatasetOrDie(idSupplied); DatasetVersion dsv = ds.getLatestVersion(); User user = getRequestUser(crc); - if (dsv.isDraft() && permissionSvc.requestOn(createDataverseRequest(user), ds).has(Permission.PublishDataset)) { + + boolean canSeeStatus = false; + // Check if curation labels should be shown to all users + boolean showCurationLabelsToAll = JvmSettings.UI_SHOW_CURATION_STATUS_TO_ALL.lookupOptional(Boolean.class).orElse(false); + // If so, see if this user + if (showCurationLabelsToAll) { + // See if user can view the draft version + canSeeStatus = permissionSvc.requestOn(createDataverseRequest(user), ds).has(Permission.ViewUnpublishedDataset); + } else { + // Check if the user can publish the dataset + canSeeStatus = permissionSvc.requestOn(createDataverseRequest(user), ds).has(Permission.PublishDataset); + } + + if (dsv.isDraft() && (canSeeStatus)) { List statuses = includeHistory ? dsv.getCurationStatuses() : Collections.singletonList(dsv.getCurrentCurationStatus()); if (includeHistory) { JsonArrayBuilder arrayBuilder = Json.createArrayBuilder();