From 003a624f008798893583471bae23e6b94d7db8c7 Mon Sep 17 00:00:00 2001 From: Costantino Perciante Date: Tue, 27 Jun 2017 08:11:21 +0000 Subject: [PATCH] user's role in organization is now checked via db (much faster) git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/catalogue-ws@150554 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../datacatalogue/catalogue/utils/CatalogueUtils.java | 10 ++++------ .../gcube/datacatalogue/catalogue/utils/Validator.java | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/gcube/datacatalogue/catalogue/utils/CatalogueUtils.java b/src/main/java/org/gcube/datacatalogue/catalogue/utils/CatalogueUtils.java index 18dd47a..9557705 100644 --- a/src/main/java/org/gcube/datacatalogue/catalogue/utils/CatalogueUtils.java +++ b/src/main/java/org/gcube/datacatalogue/catalogue/utils/CatalogueUtils.java @@ -1,7 +1,6 @@ package org.gcube.datacatalogue.catalogue.utils; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Map; @@ -245,17 +244,16 @@ public class CatalogueUtils { public static void checkRole(String username, String organization) throws Exception { DataCatalogue catalogue = getCatalogue(); - + // check organization exists CkanOrganization org = catalogue.getOrganizationByName(organization); - + if(org == null) throw new Exception("It seems that an organization with name " + organization + " doesn't exist!"); - Map> rolesPerUser = catalogue.getOrganizationsAndRolesByUser(username, - Arrays.asList(RolesCkanGroupOrOrg.ADMIN, RolesCkanGroupOrOrg.EDITOR)); + Map> rolesPerOrganization = catalogue.getUserRoleByOrganization(username, catalogue.getApiKeyFromUsername(username)); - if(!rolesPerUser.containsKey(organization)) + if(rolesPerOrganization.get(org.getName()).values().contains(RolesCkanGroupOrOrg.MEMBER)) throw new Exception("It seems you are neither Catalogue-Admin nor Catalogue-Editor in organization " + organization + "!"); } diff --git a/src/main/java/org/gcube/datacatalogue/catalogue/utils/Validator.java b/src/main/java/org/gcube/datacatalogue/catalogue/utils/Validator.java index 3ee35d3..dd66d74 100644 --- a/src/main/java/org/gcube/datacatalogue/catalogue/utils/Validator.java +++ b/src/main/java/org/gcube/datacatalogue/catalogue/utils/Validator.java @@ -116,8 +116,8 @@ public class Validator { ownerOrg.toLowerCase().replace(" ", "_").replace("-", "_") : null; if(organization != null){ - dataset.put(Constants.OWNER_ORG_KEY, organization); CatalogueUtils.checkRole(username, organization); + dataset.put(Constants.OWNER_ORG_KEY, organization); } else throw new Exception("You must specify the field owner_org in which the item should be published!");