From 8bcc587205bfb4c9d71cd145ffa63aab6318703f Mon Sep 17 00:00:00 2001 From: Matija Obreza Date: Wed, 26 Dec 2018 13:52:36 +0100 Subject: [PATCH] Admin tools: Fix ACL for repository folders, files, galleries, subsets, datasets --- .../listener/ApplicationUpgrades.java | 45 ------------------ .../server/mvc/admin/AdminController.java | 46 +++++++++++++++++++ src/main/webapp/WEB-INF/jsp/admin/index.jsp | 4 ++ 3 files changed, 50 insertions(+), 45 deletions(-) diff --git a/src/main/java/org/genesys2/server/component/listener/ApplicationUpgrades.java b/src/main/java/org/genesys2/server/component/listener/ApplicationUpgrades.java index 171df9ad3..a83fe9985 100644 --- a/src/main/java/org/genesys2/server/component/listener/ApplicationUpgrades.java +++ b/src/main/java/org/genesys2/server/component/listener/ApplicationUpgrades.java @@ -21,11 +21,8 @@ import org.genesys.blocks.util.ClassAclOid; import org.genesys.blocks.util.CurrentApplicationContext; import org.genesys.catalog.model.Partner; import org.genesys.catalog.persistence.PartnerRepository; -import org.genesys.catalog.persistence.dataset.DatasetRepository; import org.genesys2.server.component.security.AsAdminInvoker; import org.genesys2.server.model.impl.FaoInstitute; -import org.genesys2.server.persistence.SubsetRepository; -import org.genesys2.server.persistence.kpi.ExecutionRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.InitializingBean; @@ -58,28 +55,12 @@ public class ApplicationUpgrades implements InitializingBean { */ @Override public void afterPropertiesSet() throws Exception { - kpiEnsureACL(); aclEnsureClassOIDs(); aclMakePartnersPublic(); - aclMakeDraftsPrivate(); } - @Autowired - private ExecutionRepository kpiExecutionRepository; @Autowired private CustomAclService aclService; - - protected void kpiEnsureACL() throws Exception { - asAdminInvoker.invoke(() -> { - LOG.warn("Adding ACL support to KPI Execution"); - kpiExecutionRepository.findAll().forEach(execution -> { - LOG.warn("Making KPI Execution {} ACL-ready", execution.getName()); - aclService.createOrUpdatePermissions(execution); - }); - return true; - }); - } - private void aclEnsureClassOIDs() throws Exception { asAdminInvoker.invoke(() -> { @@ -95,7 +76,6 @@ public class ApplicationUpgrades implements InitializingBean { }); } - @Autowired private PartnerRepository partnerRepository; @@ -110,29 +90,4 @@ public class ApplicationUpgrades implements InitializingBean { return true; }); } - - @Autowired - private DatasetRepository datasetRepository; - @Autowired - private SubsetRepository subsetRepository; - - private void aclMakeDraftsPrivate() throws Exception { - asAdminInvoker.invoke(() -> { - LOG.warn("Making non-published Datasets and Subsets private, and published publicly readable"); - - datasetRepository.findAll().forEach(dataset -> { - LOG.warn("Setting ACL for Dataset {}", dataset.getTitle()); - aclService.makePubliclyReadable(dataset, dataset.isPublished()); - }); - - subsetRepository.findAll().forEach(subset -> { - LOG.warn("Setting ACL for Subset {}", subset.getTitle()); - aclService.makePubliclyReadable(subset, subset.isPublished()); - }); - - LOG.warn("Datasets and Subsets are protected."); - return true; - }); - } - } diff --git a/src/main/java/org/genesys2/server/mvc/admin/AdminController.java b/src/main/java/org/genesys2/server/mvc/admin/AdminController.java index 105d9b4b2..934265e89 100644 --- a/src/main/java/org/genesys2/server/mvc/admin/AdminController.java +++ b/src/main/java/org/genesys2/server/mvc/admin/AdminController.java @@ -53,6 +53,8 @@ import org.genesys2.server.model.impl.FaoInstitute; import org.genesys2.server.persistence.AccessionRepository; import org.genesys2.server.persistence.FaoInstituteRepository; import org.genesys2.server.persistence.PDCIRepository; +import org.genesys2.server.persistence.SubsetRepository; +import org.genesys2.server.persistence.kpi.ExecutionRepository; import org.genesys2.server.service.ContentService; import org.genesys2.server.service.CountryNamesUpdater; import org.genesys2.server.service.CropService; @@ -545,5 +547,49 @@ public class AdminController { return "redirect:/admin/"; } + + @Autowired + private SubsetRepository subsetRepository; + + @PostMapping(value = "/acl", params = { "subsets" }) + @Transactional + public String aclFixSubsetAcl() throws Exception { + + LOG.warn("Adding ACL for Subsets"); + subsetRepository.findAll().forEach(subset -> { + LOG.warn("Setting ACL for Subset {}", subset.getTitle()); + aclService.makePubliclyReadable(subset, subset.isPublished()); + }); + + return "redirect:/admin/"; + } + + @PostMapping(value = "/acl", params = { "datasets" }) + @Transactional + public String aclFixDatasetAcl() throws Exception { + + LOG.warn("Adding ACL for Datasets"); + datasetRepository.findAll().forEach(dataset -> { + LOG.warn("Setting ACL for Dataset {}", dataset.getTitle()); + aclService.makePubliclyReadable(dataset, dataset.isPublished()); + }); + + return "redirect:/admin/"; + } + + @Autowired + private ExecutionRepository kpiExecutionRepository; + @PostMapping(value = "/acl", params = { "kpi" }) + @Transactional + public String aclFixKPIAcl() throws Exception { + LOG.warn("Adding ACL support to KPI Execution"); + + kpiExecutionRepository.findAll().forEach(execution -> { + LOG.warn("Making KPI Execution {} ACL-ready", execution.getName()); + aclService.createOrUpdatePermissions(execution); + }); + + return "redirect:/admin/"; + } } diff --git a/src/main/webapp/WEB-INF/jsp/admin/index.jsp b/src/main/webapp/WEB-INF/jsp/admin/index.jsp index ff1c801ad..876a7e08e 100644 --- a/src/main/webapp/WEB-INF/jsp/admin/index.jsp +++ b/src/main/webapp/WEB-INF/jsp/admin/index.jsp @@ -192,6 +192,10 @@
"> + + + +
-- GitLab