fix in checkrole method

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/data-catalogue/ckan-util-library@131418 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Costantino Perciante 2016-09-15 15:41:33 +00:00
parent 5fa2475614
commit 6295a91bae
2 changed files with 50 additions and 42 deletions

View File

@ -784,43 +784,48 @@ public class CKanUtilsImpl implements CKanUtils{
// else // else
organizationNameToCheck = organizationName.toLowerCase(); organizationNameToCheck = organizationName.toLowerCase();
boolean alreadyPresent = isRoleAlreadySet(ckanUsername, organizationNameToCheck, correspondentRoleToCheck); try{
boolean alreadyPresent = isRoleAlreadySet(ckanUsername, organizationNameToCheck, correspondentRoleToCheck);
if(alreadyPresent) if(alreadyPresent)
return true; // just return return true; // just return
else{ else{
// we need to use the apis to make it // we need to use the apis to make it
String path = "/api/3/action/organization_member_create"; String path = "/api/3/action/organization_member_create";
// Request parameters to be replaced // Request parameters to be replaced
String parameter = "{" String parameter = "{"
+ "\"id\":\"ORGANIZATION_ID_NAME\"," + "\"id\":\"ORGANIZATION_ID_NAME\","
+ "\"username\":\"USERNAME_ID_NAME\"," + "\"username\":\"USERNAME_ID_NAME\","
+ "\"role\":\"ROLE\"" + "\"role\":\"ROLE\""
+ "}"; + "}";
// replace those values // replace those values
parameter = parameter.replace("ORGANIZATION_ID_NAME", organizationNameToCheck); parameter = parameter.replace("ORGANIZATION_ID_NAME", organizationNameToCheck);
parameter = parameter.replace("USERNAME_ID_NAME", ckanUsername); parameter = parameter.replace("USERNAME_ID_NAME", ckanUsername);
parameter = parameter.replace("ROLE", correspondentRoleToCheck.toString().toLowerCase()); parameter = parameter.replace("ROLE", correspondentRoleToCheck.toString().toLowerCase());
logger.debug("API request for organization membership is going to be " + parameter); logger.debug("API request for organization membership is going to be " + parameter);
try(CloseableHttpClient httpClient = HttpClientBuilder.create().build();) { try(CloseableHttpClient httpClient = HttpClientBuilder.create().build();) {
HttpPost request = new HttpPost(CKAN_CATALOGUE_URL + path); HttpPost request = new HttpPost(CKAN_CATALOGUE_URL + path);
request.addHeader("Authorization", CKAN_TOKEN_SYS); // sys token request.addHeader("Authorization", CKAN_TOKEN_SYS); // sys token
StringEntity params = new StringEntity(parameter); StringEntity params = new StringEntity(parameter);
request.setEntity(params); request.setEntity(params);
HttpResponse response = httpClient.execute(request); HttpResponse response = httpClient.execute(request);
logger.debug("Response code is " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase()); logger.debug("Response code is " + response.getStatusLine().getStatusCode() + " and response message is " + response.getStatusLine().getReasonPhrase());
return (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK); return (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK);
}catch (Exception ex) { }catch (Exception ex) {
logger.error("Error while trying to change the role for this user ", ex); logger.error("Error while trying to change the role for this user ", ex);
}
} }
}catch (Exception ex) {
logger.error("Unable to check if this role was already set, please check your parameters! ", ex);
} }
return false; return false;
} }
@ -833,20 +838,14 @@ public class CKanUtilsImpl implements CKanUtils{
*/ */
protected boolean isRoleAlreadySet(String ckanUsername, protected boolean isRoleAlreadySet(String ckanUsername,
String organizationName, String organizationName,
RolesIntoOrganization correspondentRoleToCheck) { RolesIntoOrganization correspondentRoleToCheck) throws Exception{
try{ // get the users (if you try ckanOrganization.getUsers() it returns null.. maybe a bug TODO)
List<CkanUser> users = client.getOrganization(organizationName).getUsers();
// get the users (if you try ckanOrganization.getUsers() it returns null.. maybe a bug TODO) for (CkanUser ckanUser : users) {
List<CkanUser> users = client.getOrganization(organizationName).getUsers(); if(ckanUser.getName().equals(ckanUsername) && ckanUser.getCapacity().equals(correspondentRoleToCheck.toString().toLowerCase()))
return true;
for (CkanUser ckanUser : users) {
if(ckanUser.getName().equals(ckanUsername) && ckanUser.getCapacity().equals(correspondentRoleToCheck.toString().toLowerCase()))
return true;
}
}catch(Exception e){
logger.error("Unable to check if this role was already set", e);
} }
return false; return false;

View File

@ -23,7 +23,7 @@ public class TestCKanLib {
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(TestCKanLib.class); private static final org.slf4j.Logger logger = LoggerFactory.getLogger(TestCKanLib.class);
private CkanUtilsFactory factory; private CkanUtilsFactory factory;
private String scope = "/gcube/devNext/NextNext"; private String scope = "/gcube";
private String testUser = "costantino_perciante"; private String testUser = "costantino_perciante";
String subjectId = "aa_father4"; String subjectId = "aa_father4";
String objectId = "bb_son4"; String objectId = "bb_son4";
@ -178,12 +178,12 @@ public class TestCKanLib {
ScopeProvider.instance.set("/gcube"); ScopeProvider.instance.set("/gcube");
String url = "https://dev4.d4science.org/group/devvre/ckan"; String url = "https://dev4.d4science.org/group/devvre/ckan";
String scopeToUse = new ApplicationProfileScopePerUrlReader().getScopePerUrl(url); String scopeToUse = ApplicationProfileScopePerUrlReader.getScopePerUrl(url);
logger.debug("Retrieved scope is " + scopeToUse); logger.debug("Retrieved scope is " + scopeToUse);
ScopeProvider.instance.reset(); // the following sysout should print null ScopeProvider.instance.reset(); // the following sysout should print null
String url2 = "https://dev4.d4science.org/group/devvre/ckan"; String url2 = "https://dev4.d4science.org/group/devvre/ckan";
String scopeToUse2 = new ApplicationProfileScopePerUrlReader().getScopePerUrl(url2); String scopeToUse2 = ApplicationProfileScopePerUrlReader.getScopePerUrl(url2);
logger.debug("Retrieved scope is " + scopeToUse2); logger.debug("Retrieved scope is " + scopeToUse2);
} }
@ -246,4 +246,13 @@ public class TestCKanLib {
// //
} }
//@Test
public void testInvalidOrgRole() throws Exception{
CKanUtilsImpl instance = factory.getUtilsPerScope(scope);
boolean res = instance.checkRole("costantino_perciante", "gcube", RolesIntoOrganization.EDITOR);
logger.debug(""+res);
}
} }