From 70854840da615a0d8aa1cba267aa4c26950d9aef 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 --- .../server/api/v1/AdminController.java | 39 +++++++++++++++++- .../server/mvc/admin/AdminController.java | 40 ++++++++++++++++++- src/main/webapp/WEB-INF/jsp/admin/index.jsp | 5 ++- 3 files changed, 78 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/genesys2/server/api/v1/AdminController.java b/src/main/java/org/genesys2/server/api/v1/AdminController.java index 4b5590539..83d898fc9 100644 --- a/src/main/java/org/genesys2/server/api/v1/AdminController.java +++ b/src/main/java/org/genesys2/server/api/v1/AdminController.java @@ -27,6 +27,9 @@ import org.genesys.catalog.persistence.dataset.DatasetRepository; import org.genesys.catalog.service.DatasetService; import org.genesys.filerepository.model.ImageGallery; import org.genesys.filerepository.model.RepositoryFolder; +import org.genesys.filerepository.persistence.ImageGalleryPersistence; +import org.genesys.filerepository.persistence.RepositoryFilePersistence; +import org.genesys.filerepository.persistence.RepositoryFolderRepository; import org.genesys.filerepository.service.ImageGalleryService; import org.genesys.filerepository.service.RepositoryService; import org.genesys2.server.api.ApiBaseController; @@ -39,6 +42,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -141,8 +145,9 @@ public class AdminController { } - @PostMapping(value = "/institutes-acl") - public void aclMakeInstitutesPublic() throws Exception { + @PostMapping(value = "/acl", params = { "institutes" }) + @Transactional + public void aclFixInstitutesAcl() throws Exception { LOG.warn("Adding ACL for FaoInstitutes"); instituteRepository.findAll().forEach(institute -> { @@ -152,4 +157,34 @@ public class AdminController { LOG.warn("Added ACL to existing FaoInstitutes"); } + + + @Autowired + private RepositoryFolderRepository folderRepository; + @Autowired + private RepositoryFilePersistence fileRepository; + @Autowired + private ImageGalleryPersistence imageGalleryRepository; + + @PostMapping(value = "/acl", params = { "repository" }) + @Transactional + public void aclFixRepositoryAcl() throws Exception { + + LOG.warn("Adding ACL for Repository folders"); + folderRepository.findAll().forEach(folder -> { + aclService.createOrUpdatePermissions(folder); + }); + + LOG.warn("Adding ACL for Repository files"); + fileRepository.findAll().forEach(file -> { + aclService.createOrUpdatePermissions(file); + }); + + LOG.warn("Adding ACL for Image galleries"); + imageGalleryRepository.findAll().forEach(gallery -> { + aclService.createOrUpdatePermissions(gallery); + }); + } + + } 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 74e8e94a8..105d9b4b2 100644 --- a/src/main/java/org/genesys2/server/mvc/admin/AdminController.java +++ b/src/main/java/org/genesys2/server/mvc/admin/AdminController.java @@ -37,6 +37,9 @@ import org.genesys.catalog.persistence.dataset.DatasetRepository; import org.genesys.catalog.service.DatasetService; import org.genesys.filerepository.model.ImageGallery; import org.genesys.filerepository.model.RepositoryFolder; +import org.genesys.filerepository.persistence.ImageGalleryPersistence; +import org.genesys.filerepository.persistence.RepositoryFilePersistence; +import org.genesys.filerepository.persistence.RepositoryFolderRepository; import org.genesys.filerepository.service.ImageGalleryService; import org.genesys.filerepository.service.RepositoryService; import org.genesys.worldclim.WorldClimUtil; @@ -74,6 +77,7 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; +import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -499,8 +503,8 @@ public class AdminController { return "redirect:/admin/"; } - @PostMapping(value = "/institutes-acl") - public void aclMakeInstitutesPublic() throws Exception { + @PostMapping(value = "/acl", params = { "institutes" }) + public String aclMakeInstitutesPublic() throws Exception { LOG.warn("Adding ACL for FaoInstitutes"); instituteRepository.findAll().forEach(institute -> { @@ -509,5 +513,37 @@ public class AdminController { }); LOG.warn("Added ACL to existing FaoInstitutes"); + return "redirect:/admin/"; } + + + @Autowired + private RepositoryFolderRepository folderRepository; + @Autowired + private RepositoryFilePersistence fileRepository; + @Autowired + private ImageGalleryPersistence imageGalleryRepository; + + @PostMapping(value = "/acl", params = { "repository" }) + @Transactional + public String aclFixRepositoryAcl() throws Exception { + + LOG.warn("Adding ACL for Repository folders"); + folderRepository.findAll().forEach(folder -> { + aclService.createOrUpdatePermissions(folder); + }); + + LOG.warn("Adding ACL for Repository files"); + fileRepository.findAll().forEach(file -> { + aclService.createOrUpdatePermissions(file); + }); + + LOG.warn("Adding ACL for Image galleries"); + imageGalleryRepository.findAll().forEach(gallery -> { + aclService.createOrUpdatePermissions(gallery); + }); + + 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 a499f4ad4..ff1c801ad 100644 --- a/src/main/webapp/WEB-INF/jsp/admin/index.jsp +++ b/src/main/webapp/WEB-INF/jsp/admin/index.jsp @@ -189,8 +189,9 @@ -
"> - + "> + +
-- GitLab