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:
parent
5fa2475614
commit
6295a91bae
|
@ -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;
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue