From 65a85c3f5cb9e0ac9a595cdbaada340c10816b14 Mon Sep 17 00:00:00 2001 From: chrisala Date: Mon, 9 Sep 2024 17:02:32 +1000 Subject: [PATCH] Made electFacet viewable by hub officers #3320 --- .../au/org/ala/merit/HomeController.groovy | 8 +++- .../releases/4.0/changeMeritFacetConfig.js | 5 +++ .../org/ala/merit/HomeControllerSpec.groovy | 39 +++++++++++++++++-- 3 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 src/main/scripts/releases/4.0/changeMeritFacetConfig.js diff --git a/grails-app/controllers/au/org/ala/merit/HomeController.groovy b/grails-app/controllers/au/org/ala/merit/HomeController.groovy index 04b277da2..1002faea3 100644 --- a/grails-app/controllers/au/org/ala/merit/HomeController.groovy +++ b/grails-app/controllers/au/org/ala/merit/HomeController.groovy @@ -93,10 +93,16 @@ class HomeController { boolean canViewAdminFacetsAndDownloads = userService.userIsAlaOrFcAdmin() || userService.userHasReadOnlyAccess() if (!canViewAdminFacetsAndDownloads) { - def adminFacetList = SettingService.getHubConfig().adminFacets ?: [] + List adminFacetList = SettingService.getHubConfig().adminFacets ?: [] facetsList?.removeAll(adminFacetList) mapFacets?.removeAll(adminFacetList) } + boolean canViewOfficerFacets = userService.userIsSiteAdmin() || userService.userHasReadOnlyAccess() + if (!canViewOfficerFacets) { + List officerFacetList = SettingService.getHubConfig().officerFacets ?: [] + facetsList?.removeAll(officerFacetList) + mapFacets?.removeAll(officerFacetList) + } def fqList = params.getList('fq') def allFacets = fqList + (SettingService.getHubConfig().defaultFacetQuery?:[]) diff --git a/src/main/scripts/releases/4.0/changeMeritFacetConfig.js b/src/main/scripts/releases/4.0/changeMeritFacetConfig.js new file mode 100644 index 000000000..2694c7925 --- /dev/null +++ b/src/main/scripts/releases/4.0/changeMeritFacetConfig.js @@ -0,0 +1,5 @@ +let hub = db.hub.findOne({urlPath:'merit'}); +const electFacetIndex = hub.adminFacets.indexOf('electFacet'); +hub.adminFacets.splice(electFacetIndex, 1); +hub.officerFacets = ['electFacet']; +db.hub.replaceOne({hubId:hub.hubId}, hub); \ No newline at end of file diff --git a/src/test/groovy/au/org/ala/merit/HomeControllerSpec.groovy b/src/test/groovy/au/org/ala/merit/HomeControllerSpec.groovy index d4c702550..7a5ef1f7c 100644 --- a/src/test/groovy/au/org/ala/merit/HomeControllerSpec.groovy +++ b/src/test/groovy/au/org/ala/merit/HomeControllerSpec.groovy @@ -12,7 +12,7 @@ class HomeControllerSpec extends Specification implements ControllerUnitTest> true + 1 * userService.userIsSiteAdmin() >> true } else if (readOnly) { 1 * userService.userIsAlaOrFcAdmin() >> false - 1 * userService.userHasReadOnlyAccess() >> true + 1 * userService.userIsSiteAdmin() >> false + 2 * userService.userHasReadOnlyAccess() >> true } 1 * searchService.HomePageFacets(params) >> resp 1 * settingService.getSettingText(_) >> "Project explorer description" 1 * metadataService.activityTypesList() >> activityTypes and: - model.facetsList == ['nameFacet', 'descriptionFacet', 'admin'] + model.facetsList == ['nameFacet', 'descriptionFacet', 'admin', 'elect'] model.mapFacets == ['adminMap'] model.geographicFacets == [] model.description == "Project explorer description" @@ -215,7 +217,7 @@ class HomeControllerSpec extends Specification implements ControllerUnitTest> false 1 * userService.userHasReadOnlyAccess() >> false + 1 * userService.userIsSiteAdmin() >> true + + 1 * searchService.HomePageFacets(params) >> resp + 1 * settingService.getSettingText(_) >> "Project explorer description" + 0 * metadataService.activityTypesList() + + and: + model.facetsList == ['nameFacet', 'descriptionFacet', 'elect'] + model.mapFacets == [] + model.geographicFacets == [] + model.description == "Project explorer description" + model.results == resp + model.projectCount == 0 + model.includeDownloads == false + model.activityTypes == null + + } + + def "Users without MERIT admin or read only cannot view admin facets or downloads"() { + setup: + Map resp = [:] + when: + params.fq="status:active" + controller.projectExplorer() + + then: + 1 * userService.userIsAlaOrFcAdmin() >> false + 2 * userService.userHasReadOnlyAccess() >> false + 1 * userService.userIsSiteAdmin() >> false 1 * searchService.HomePageFacets(params) >> resp 1 * settingService.getSettingText(_) >> "Project explorer description" 0 * metadataService.activityTypesList()