Added test code to perform CKAN logout
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/gcube-ckan-datacatalog@129498 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
d7a7922126
commit
5ba5151323
|
@ -1,5 +1,6 @@
|
||||||
eclipse.preferences.version=1
|
eclipse.preferences.version=1
|
||||||
jarsExcludedFromWebInfLib=
|
jarsExcludedFromWebInfLib=
|
||||||
lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/gcube-ckan-datacatalog-TRUNK-1.0.0-SNAPSHOT/target/gcube-ckan-datacatalog-1.0.0-SNAPSHOT
|
lastWarOutDir=/home/francesco-mangiacrapa/wseclipseluna/gcube-ckan-datacatalog-TRUNK-1.0.0-SNAPSHOT/target/gcube-ckan-datacatalog-1.0.0-SNAPSHOT
|
||||||
|
launchConfigExternalUrlPrefix=
|
||||||
warSrcDir=src/main/webapp
|
warSrcDir=src/main/webapp
|
||||||
warSrcDirIsOutput=false
|
warSrcDirIsOutput=false
|
||||||
|
|
6
pom.xml
6
pom.xml
|
@ -102,6 +102,12 @@
|
||||||
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
<version>[1.0.0-SNAPSHOT, 2.0.0-SNAPSHOT)</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.httpcomponents</groupId>
|
||||||
|
<artifactId>httpclient</artifactId>
|
||||||
|
<version>4.5.2</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.gcube.applicationsupportlayer</groupId>
|
<groupId>org.gcube.applicationsupportlayer</groupId>
|
||||||
<artifactId>aslcore</artifactId>
|
<artifactId>aslcore</artifactId>
|
||||||
|
|
|
@ -25,11 +25,6 @@ import org.gcube.portlets.widgets.ckandatapublisherwidget.client.ui.CreateDatase
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Modal;
|
import com.github.gwtbootstrap.client.ui.Modal;
|
||||||
import com.google.gwt.event.shared.HandlerManager;
|
import com.google.gwt.event.shared.HandlerManager;
|
||||||
import com.google.gwt.http.client.Request;
|
|
||||||
import com.google.gwt.http.client.RequestBuilder;
|
|
||||||
import com.google.gwt.http.client.RequestCallback;
|
|
||||||
import com.google.gwt.http.client.RequestException;
|
|
||||||
import com.google.gwt.http.client.Response;
|
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
|
|
||||||
|
@ -177,11 +172,17 @@ public class CkanEventHandlerManager {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLogout(NotifyLogoutEvent editMetadataEvent) {
|
public void onLogout(NotifyLogoutEvent editMetadataEvent) {
|
||||||
|
// open("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", "_blank", null);
|
||||||
|
// String url = GWT.getHostPageBaseURL()+"CkanLogoutCatalog.html?logout=https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810";
|
||||||
|
// Window.open(url, "_blank", null);
|
||||||
|
|
||||||
|
// logutWindow("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", false);
|
||||||
|
// logutWindow("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", true);
|
||||||
|
|
||||||
// com.google.gwt.user.client.Window.open(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE, "_blank", "");
|
// com.google.gwt.user.client.Window.open(GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE, "_blank", "");
|
||||||
// com.google.gwt.user.client.Window.open("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", "_blank", "");
|
// com.google.gwt.user.client.Window.open("https://ckan-d-d4s.d4science.org:443/ckan-connector/gcube/service/disconnect?gcube-token=4620e6d0-2313-4f48-9d54-eb3efd01a810", "_blank", "");
|
||||||
|
|
||||||
RequestBuilder logutRequestBuilder = new RequestBuilder(RequestBuilder.GET, GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
|
/*RequestBuilder logutRequestBuilder = new RequestBuilder(RequestBuilder.GET, GCubeCkanDataCatalog.CKAN_LOGUT_SERVICE);
|
||||||
|
|
||||||
logutRequestBuilder.setCallback(new RequestCallback() {
|
logutRequestBuilder.setCallback(new RequestCallback() {
|
||||||
|
|
||||||
|
@ -202,24 +203,7 @@ public class CkanEventHandlerManager {
|
||||||
logutRequestBuilder.send();
|
logutRequestBuilder.send();
|
||||||
} catch ( RequestException e ) {
|
} catch ( RequestException e ) {
|
||||||
Window.alert("Error on logout");
|
Window.alert("Error on logout");
|
||||||
}
|
}*/
|
||||||
|
|
||||||
/*GCubeCkanDataCatalog.service.logoutFromCkan(new AsyncCallback<Void>() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onFailure(Throwable caught) {
|
|
||||||
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void result) {
|
|
||||||
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -233,6 +217,18 @@ public class CkanEventHandlerManager {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static native void logutWindow(String uri, boolean timeout)/*-{
|
||||||
|
var newWindow = window.open(uri, '_blank', 'width=50,height=50');
|
||||||
|
newWindow.onload = function() {
|
||||||
|
setTimeout();
|
||||||
|
};
|
||||||
|
setTimeout(function() {
|
||||||
|
newWindow.close();
|
||||||
|
}, 500);
|
||||||
|
return false;
|
||||||
|
}-*/;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -24,4 +24,9 @@ public interface GcubeCkanDataCatalogService extends RemoteService {
|
||||||
String getUser();
|
String getUser();
|
||||||
|
|
||||||
void logoutFromCkan();
|
void logoutFromCkan();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
String logoutURIFromCkan();
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,4 +33,7 @@ public interface GcubeCkanDataCatalogServiceAsync {
|
||||||
*/
|
*/
|
||||||
void logoutFromCkan(AsyncCallback<Void> callback);
|
void logoutFromCkan(AsyncCallback<Void> callback);
|
||||||
|
|
||||||
|
|
||||||
|
void logoutURIFromCkan(AsyncCallback<String> callback);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,10 +5,7 @@ package org.gcube.portlets.gcubeckan.gcubeckandatacatalog.server;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
import javax.servlet.ServletException;
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
|
@ -17,6 +14,12 @@ import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
|
import org.apache.http.Header;
|
||||||
|
import org.apache.http.HttpEntity;
|
||||||
|
import org.apache.http.client.methods.CloseableHttpResponse;
|
||||||
|
import org.apache.http.client.methods.HttpGet;
|
||||||
|
import org.apache.http.impl.client.CloseableHttpClient;
|
||||||
|
import org.apache.http.impl.client.HttpClients;
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
import org.gcube.application.framework.core.session.SessionManager;
|
import org.gcube.application.framework.core.session.SessionManager;
|
||||||
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
import org.gcube.portlets.gcubeckan.gcubeckandatacatalog.shared.CkanConnectorAccessPoint;
|
||||||
|
@ -28,6 +31,7 @@ import eu.trentorise.opendata.traceprov.internal.org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* The Class CkanLogout.
|
||||||
*
|
*
|
||||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||||
* Jun 27, 2016
|
* Jun 27, 2016
|
||||||
|
@ -62,11 +66,76 @@ public class CkanLogout extends HttpServlet {
|
||||||
ckan.addGubeToken(ckanAP.getGcubeTokenValue());
|
ckan.addGubeToken(ckanAP.getGcubeTokenValue());
|
||||||
|
|
||||||
URL url;
|
URL url;
|
||||||
|
String deleteURI = ckan.buildURI();
|
||||||
|
// resp.sendRedirect(deleteURI);
|
||||||
|
CloseableHttpResponse httpResponse = null;
|
||||||
try {
|
try {
|
||||||
String deleteURI = ckan.buildURI();
|
|
||||||
|
CloseableHttpClient httpclient = HttpClients.createDefault();
|
||||||
|
HttpGet httpget = new HttpGet(deleteURI);
|
||||||
|
httpResponse = httpclient.execute(httpget);
|
||||||
|
|
||||||
|
if(httpResponse.getStatusLine().getStatusCode()==HttpStatus.SC_OK){
|
||||||
|
resp.setStatus(HttpStatus.SC_OK);
|
||||||
|
|
||||||
|
Header[] headers = httpResponse.getAllHeaders();
|
||||||
|
|
||||||
|
for (Header header : headers) {
|
||||||
|
logger.trace("header key: "+header.getName() +", value: "+header.getValue());
|
||||||
|
if(header.getName()==null){
|
||||||
|
logger.trace("skip key: "+header.getName() +", value: "+header.getValue());
|
||||||
|
}else
|
||||||
|
resp.setHeader(header.getName(),header.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
HttpEntity entity = httpResponse.getEntity();
|
||||||
|
if (entity != null) {
|
||||||
|
resp.setHeader("Content-Length", String.valueOf(entity.getContentLength()));
|
||||||
|
// resp.setContentLength(entity.getContentLength());
|
||||||
|
Header encoding = entity.getContentEncoding();
|
||||||
|
logger.trace("Encoding: "+encoding.getName() + ", "+encoding.getValue());
|
||||||
|
// String encod = encoding == null ? GcubeCkanDataCatalogServiceImpl.UTF_8 : encoding.getName();
|
||||||
|
// resp.setCharacterEncoding(encoding);
|
||||||
|
resp.setStatus(HttpStatus.SC_OK);
|
||||||
|
resp.setContentType(resp.getContentType());
|
||||||
|
InputStream in = entity.getContent();
|
||||||
|
try {
|
||||||
|
ServletOutputStream out = resp.getOutputStream();
|
||||||
|
IOUtils.copy(in, out);
|
||||||
|
logger.info("Logout Completed, response code: "+HttpStatus.SC_OK);
|
||||||
|
} finally {
|
||||||
|
in.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.warn("An error occurred during copying CKAN logout response",e);
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
logger.warn("An error occurred during perfoming CKAN logout, Response status is: "+httpResponse.getStatusLine().getStatusCode());
|
||||||
|
HttpEntity entity = httpResponse.getEntity();
|
||||||
|
if (entity != null) {
|
||||||
|
InputStream in = entity.getContent();
|
||||||
|
if(in!=null){
|
||||||
|
logger.error("Response error: "+IOUtils.toString(in));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception e){
|
||||||
|
logger.warn("An error occurred during perfoming CKAN logout", e);
|
||||||
|
}finally {
|
||||||
|
if(httpResponse!=null)
|
||||||
|
httpResponse.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*try {
|
||||||
|
|
||||||
logger.debug("Perfoming HTTP delete to URI: "+deleteURI);
|
logger.debug("Perfoming HTTP delete to URI: "+deleteURI);
|
||||||
url = new URL(deleteURI);
|
url = new URL(deleteURI);
|
||||||
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
|
HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();
|
||||||
|
|
||||||
|
req.getCookies();
|
||||||
// httpCon.setDoOutput(true);
|
// httpCon.setDoOutput(true);
|
||||||
// httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" );
|
// httpCon.setRequestProperty("Content-Type", "application/x-www-form-urlencoded" );
|
||||||
// httpCon.setRequestProperty(key, value);
|
// httpCon.setRequestProperty(key, value);
|
||||||
|
@ -113,7 +182,7 @@ public class CkanLogout extends HttpServlet {
|
||||||
}
|
}
|
||||||
catch (IOException e) {
|
catch (IOException e) {
|
||||||
logger.error("An error occured during performing Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue(), e);
|
logger.error("An error occured during performing Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue(), e);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.servlet.http.HttpSession;
|
import javax.servlet.http.HttpSession;
|
||||||
|
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
|
import org.apache.http.HttpStatus;
|
||||||
import org.gcube.application.framework.core.session.ASLSession;
|
import org.gcube.application.framework.core.session.ASLSession;
|
||||||
import org.gcube.application.framework.core.session.SessionManager;
|
import org.gcube.application.framework.core.session.SessionManager;
|
||||||
import org.gcube.common.scope.api.ScopeProvider;
|
import org.gcube.common.scope.api.ScopeProvider;
|
||||||
|
@ -37,7 +38,6 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
|
||||||
|
|
||||||
import eu.trentorise.opendata.jackan.internal.org.apache.http.HttpStatus;
|
|
||||||
import eu.trentorise.opendata.traceprov.internal.org.apache.commons.io.IOUtils;
|
import eu.trentorise.opendata.traceprov.internal.org.apache.commons.io.IOUtils;
|
||||||
/**
|
/**
|
||||||
* The server side implementation of the RPC service.
|
* The server side implementation of the RPC service.
|
||||||
|
@ -384,6 +384,26 @@ public class GcubeCkanDataCatalogServiceImpl extends RemoteServiceServlet implem
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String logoutURIFromCkan() {
|
||||||
|
HttpSession httpSession = this.getThreadLocalRequest().getSession();
|
||||||
|
ASLSession session = getASLSession(httpSession);
|
||||||
|
String username = session.getUsername();
|
||||||
|
CkanConnectorAccessPoint ckanAP = SessionUtil.getCkanAccessPoint(this.getThreadLocalRequest().getSession());
|
||||||
|
// String token = getGcubeSecurityToken();
|
||||||
|
logger.info("Logout from CKAN for: "+username +" by token: "+ckanAP.getGcubeTokenValue());
|
||||||
|
|
||||||
|
String ckanConnectorLogut = getServletContext().getInitParameter(CKANCONNECTORLOGOUT);
|
||||||
|
logger.debug(CKANCONNECTORLOGOUT + " is: "+ckanConnectorLogut);
|
||||||
|
|
||||||
|
CkanConnectorAccessPoint ckan = new CkanConnectorAccessPoint(ckanAP.getBaseUrl());
|
||||||
|
ckan.addPathInfo(ckanConnectorLogut);
|
||||||
|
ckan.addGubeToken(ckanAP.getGcubeTokenValue());
|
||||||
|
|
||||||
|
URL url;
|
||||||
|
return ckan.buildURI();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GcubeCkanDataCatalogService#logoutFromCkan()
|
* @see org.gcube.portlets.gcubeckan.gcubeckandatacatalog.client.GcubeCkanDataCatalogService#logoutFromCkan()
|
||||||
|
|
Loading…
Reference in New Issue