Removed currUserId parameter from client side required by external servlets

git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@141663 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Francesco Mangiacrapa 2017-01-20 11:45:38 +00:00
parent efbc34a52b
commit eb618e3dd3
7 changed files with 42 additions and 31 deletions

View File

@ -1,7 +1,8 @@
<ReleaseNotes>
<Changeset component="org.gcube.portlets-user.workspace-portlet-tree.6-15-2"
date="2016-01-09">
date="2016-01-20">
<Change>Added a loader on share window when contacts are loading from server</Change>
<Change>Removed currUserId parameter from client side required for external servlets</Change>
</Changeset>
<Changeset component="org.gcube.portlets-user.workspace-portlet-tree.6-15-1"
date="2016-01-05">

View File

@ -945,7 +945,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
// Add currentContextId parameter
String currentContextId = GCubeClientContext.getCurrentContextId();
String currentUserId = GCubeClientContext.getCurrentUserId();
String queryString = "id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true&"+ConstantsExplorer.CURRENT_CONTEXT_ID+"="+currentContextId+"&"+ConstantsExplorer.CURRENT_USER_ID+"="+currentUserId;
String queryString = "id="+fileDownloadEvent.getItemIdentifier()+"&viewContent=true&"+ConstantsExplorer.CURRENT_CONTEXT_ID+"="+currentContextId;
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET, ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE, queryString, "_blank", downloadHandlerCallback);
} catch (Exception e) {
@ -968,7 +968,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
// Add currentContextId parameter
String currentContextId = GCubeClientContext.getCurrentContextId();
String currentUserId = GCubeClientContext.getCurrentUserId();
String queryString = "id="+fileDownloadEvent.getItemIdentifier()+"&"+ConstantsExplorer.CURRENT_CONTEXT_ID+"="+currentContextId+"&"+ConstantsExplorer.CURRENT_USER_ID+"="+currentUserId;
String queryString = "id="+fileDownloadEvent.getItemIdentifier()+"&"+ConstantsExplorer.CURRENT_CONTEXT_ID+"="+currentContextId;
new RequestBuilderWorkspaceValidateItem(RequestBuilder.GET,ConstantsExplorer.DOWNLOAD_WORKSPACE_SERVICE, queryString, "_self", downloadHandlerCallback);
} catch (Exception e) {
explorerPanel.getAsycTreePanel().unmask();

View File

@ -230,7 +230,6 @@ public static enum WS_UPLOAD_TYPE {File, Archive};
public static final String ERROR_ITEM_DOES_NOT_EXIST = "Item does not exist. It may have been deleted by another user";
public static final String VALIDATEITEM = "validateitem";
public static final String CURRENT_CONTEXT_ID = "contextID";
public static final String CURRENT_USER_ID = "currUserId";
public static final String REDIRECTONERROR = "redirectonerror";
//UPLOAD SERVLET PARAMETERS

View File

@ -35,11 +35,13 @@ import org.gcube.common.homelibrary.home.workspace.folder.items.ts.TimeSeries;
import org.gcube.common.homelibrary.util.Extensions;
import org.gcube.common.homelibrary.util.MimeTypeUtil;
import org.gcube.common.homelibrary.util.zip.ZipUtil;
import org.gcube.common.portal.PortalContext;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.server.property.PortalUrlGroupGatewayProperty;
import org.gcube.portlets.user.workspace.server.util.WsUtil;
import org.gcube.portlets.user.workspace.shared.HandlerResultMessage;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
/**
@ -74,14 +76,15 @@ public class DownloadServlet extends HttpServlet{
boolean isValidItem = req.getParameter(ConstantsExplorer.VALIDATEITEM)==null?false:req.getParameter(ConstantsExplorer.VALIDATEITEM).equals("true");
boolean urlRedirectOnError = req.getParameter(ConstantsExplorer.REDIRECTONERROR)==null?false:req.getParameter(ConstantsExplorer.REDIRECTONERROR).equals("true");
String contextID = req.getParameter(ConstantsExplorer.CURRENT_CONTEXT_ID);
String userID = req.getParameter(ConstantsExplorer.CURRENT_USER_ID);
//String userID = req.getParameter(ConstantsExplorer.CURRENT_USER_ID);
logger.debug("Input Params [id: "+itemId + ", viewContent: "+viewContent+", "+ConstantsExplorer.VALIDATEITEM +": " +isValidItem+", urlRedirectOnError:" +urlRedirectOnError+", contextID: "+contextID+", userID: "+userID+"]");
logger.debug("Input Params [id: "+itemId + ", viewContent: "+viewContent+", "+ConstantsExplorer.VALIDATEITEM +": " +isValidItem+", urlRedirectOnError:" +urlRedirectOnError+", contextID: "+contextID+"]");
if(itemId==null || itemId.isEmpty()){
sendError(resp,HttpServletResponse.SC_INTERNAL_SERVER_ERROR +": Item id is null");
return;
}
logger.debug("FILE DOWNLOAD REQUEST "+itemId);
Workspace wa = null;
try {
@ -90,7 +93,11 @@ public class DownloadServlet extends HttpServlet{
// if(WsUtil.isSessionExpired(req))
// throw new SessionExpiredException();
wa = WsUtil.getWorkspace(req, contextID, userID);
if(WsUtil.isSessionExpired(req))
throw new SessionExpiredException();
GCubeUser gcubeUser = PortalContext.getConfiguration().getCurrentUser(req);
wa = WsUtil.getWorkspace(req, contextID, gcubeUser);
} catch (Exception e) {
if (e instanceof SessionExpiredException){

View File

@ -272,8 +272,8 @@ public class GWTWorkspaceBuilder {
sb.append(requestType.toString());
sb.append("&"+ConstantsExplorer.CURRENT_CONTEXT_ID+"=");
sb.append(currentGroupId);
sb.append("&"+ConstantsExplorer.CURRENT_USER_ID+"=");
sb.append(currUserId);
// sb.append("&"+ConstantsExplorer.CURRENT_USER_ID+"=");
// sb.append(currUserId);
sb.append("&random=");
sb.append(UUID.randomUUID().toString());
return sb.toString();

View File

@ -22,9 +22,12 @@ import org.gcube.common.homelibrary.home.workspace.WorkspaceItem;
import org.gcube.common.homelibrary.home.workspace.exceptions.ItemNotFoundException;
import org.gcube.common.homelibrary.home.workspace.folder.FolderItem;
import org.gcube.common.homelibrary.home.workspace.folder.items.Image;
import org.gcube.common.portal.PortalContext;
import org.gcube.portlets.user.workspace.client.ConstantsExplorer;
import org.gcube.portlets.user.workspace.client.util.ImageRequestType;
import org.gcube.portlets.user.workspace.server.util.WsUtil;
import org.gcube.portlets.user.workspace.shared.SessionExpiredException;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
/**
@ -59,7 +62,7 @@ public class ImageServlet extends HttpServlet{
String imageId = req.getParameter("id");
String imageType = req.getParameter("type");
String contextID = req.getParameter(ConstantsExplorer.CURRENT_CONTEXT_ID);
String currUserId = req.getParameter(ConstantsExplorer.CURRENT_USER_ID);
//String currUserId = req.getParameter(ConstantsExplorer.CURRENT_USER_ID);
logger.info("request image id: "+imageId+", type: "+imageType +", "+ConstantsExplorer.CURRENT_CONTEXT_ID+ ": "+contextID);
@ -70,11 +73,19 @@ public class ImageServlet extends HttpServlet{
requestType = ImageRequestType.IMAGE;
} else requestType = ImageRequestType.valueOf(imageType);
Workspace wa = null;
try {
wa = WsUtil.getWorkspace(req, contextID, currUserId);
if(WsUtil.isSessionExpired(req))
throw new SessionExpiredException();
GCubeUser gcubeUser = PortalContext.getConfiguration().getCurrentUser(req);
wa = WsUtil.getWorkspace(req, contextID, gcubeUser);
} catch (Exception e) {
if (e instanceof SessionExpiredException){
resp.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Error the user session is expired");
return;
}
logger.error("Error during workspace retrieving", e);
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,"Error during workspace retrieving");
return;

View File

@ -27,7 +27,6 @@ import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParame
import org.gcube.portlets.user.workspace.server.resolver.UriResolverReaderParameterForResolverIndex.RESOLVER_TYPE;
import org.gcube.portlets.user.workspace.server.util.resource.PropertySpecialFolderReader;
import org.gcube.portlets.user.workspace.server.util.scope.ScopeUtilFilter;
import org.gcube.vomanagement.usermanagement.impl.LiferayUserManager;
import org.gcube.vomanagement.usermanagement.model.GCubeUser;
import com.liferay.portal.service.UserLocalServiceUtil;
@ -120,8 +119,7 @@ public class WsUtil {
*/
public static boolean isSessionExpired(HttpServletRequest httpServletRequest) throws Exception {
logger.trace("workspace session validating...");
PortalContextInfo info = getPortalContext(httpServletRequest);
return info.getUsername()==null;
return PortalContext.getConfiguration().getCurrentUser(httpServletRequest)==null;
}
@ -148,21 +146,20 @@ public class WsUtil {
}
/**
* Gets the workspace.
*
* @param httpServletRequest the http servlet request
* @param contextID the context id
* @param currUserId the curr user id
* @param user the user
* @return the workspace
* @throws InternalErrorException the internal error exception
* @throws HomeNotFoundException the home not found exception
* @throws WorkspaceFolderNotFoundException the workspace folder not found exception
*/
public static Workspace getWorkspace(HttpServletRequest httpServletRequest, String contextID, String currUserId) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException
public static Workspace getWorkspace(HttpServletRequest httpServletRequest, String contextID, GCubeUser user) throws InternalErrorException, HomeNotFoundException, WorkspaceFolderNotFoundException
{
logger.info("Get workspace using contextID: "+contextID +", currUserId: "+currUserId);
logger.info("Get workspace using contextID: "+contextID +", current user: "+user.getUsername());
String currentScope = PortalContext.getConfiguration().getCurrentScope(contextID);
logger.info("For ContextID: "+contextID +", read scope from Portal Context: "+currentScope);
PortalContextInfo info = getPortalContext(httpServletRequest, currentScope);
@ -173,21 +170,17 @@ public class WsUtil {
String username = null;
try {
GCubeUser gCubeUser = new LiferayUserManager().getUserById(Long.valueOf(currUserId));
logger.debug("Gcube user read from liferay: "+gCubeUser);
if(gCubeUser!=null && gCubeUser.getUsername()!=null)
username = gCubeUser.getUsername();
if(user.getUsername().compareTo(info.getUsername())!=0){
logger.debug("Gcube user read from Portal Context "+user.getUsername()+" is different by GCubeUser passed, using the second one: "+info.getUsername());
username = user.getUsername();
}
} catch (Exception e) {
String error = "Error retrieving gCubeUser for: [userId= "
+ currUserId + ", scope: " + currentScope + "]";
logger.error(error, e);
logger.error("Error comparing username read from input parameter and Portal context");
}
if(username==null || username.isEmpty())
username = PortalContext.getConfiguration().getCurrentUser(httpServletRequest).getUsername();
//overriding username
info.setUsername(username);
if(username!=null)
info.setUsername(username);
Workspace workspace = HomeLibrary.getUserWorkspace(info.getUsername());
return workspace;