species-discovery/src/main/java/org/gcube/portlets/user/speciesdiscovery/server/util/GetWorkspaceUtil.java

102 lines
3.1 KiB
Java

/**
*
*/
package org.gcube.portlets.user.speciesdiscovery.server.util;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.gcube.application.framework.core.session.ASLSession;
import org.gcube.common.portal.PortalContext;
import org.gcube.common.storagehubwrapper.server.StorageHubWrapper;
import org.gcube.common.storagehubwrapper.server.tohl.Workspace;
import com.liferay.portal.service.UserLocalServiceUtil;
/**
* The Class GetWorkspaceUtil.
*
* @author Francesco Mangiacrapa at ISTI-CNR francesco.mangiacrapa@isti.cnr.it
*
* Oct 27, 2021
*/
public class GetWorkspaceUtil {
protected static Logger logger = Logger.getLogger(GetWorkspaceUtil.class);
/**
* Gets the workspace.
*
* @param request the request
* @param session the session
* @return the workspace
* @throws Exception the exception
*/
public static Workspace getWorkspace(final HttpServletRequest request, ASLSession session) throws Exception {
if (session == null)
throw new Exception("ASL session is null");
if (session.getScope() == null)
throw new Exception("Scope into ASL session is null");
String scope = session.getScope().toString();
// logger.trace("Get workspace for scope "+scope);
// ScopeProvider.instance.set(scope);
// logger.trace("ScopeProvider instancied for scope "+scope);
logger.trace("retuning workspace for username " + session.getUsername());
return getStorageHubWrapper(null, null, session.getUsername()).getWorkspace();
}
/**
* Checks if is within portal.
*
* @return true if you're running into the portal, false if in development
*/
public static boolean isWithinPortal() {
try {
UserLocalServiceUtil.getService();
return true;
} catch (Exception ex) {
logger.trace("Development Mode ON");
return false;
}
}
/**
* Gets the storage hub wrapper.
*
* @param request the request
* @param scopeGroupId the scope group id. If scopeGroupId is null the scope is
* read by using the request else by using the scopeGroupId
* @param username the username
* @return the storage hub wrapper
* @throws Exception the exception
*/
public static StorageHubWrapper getStorageHubWrapper(final HttpServletRequest request, String scopeGroupId,
String username) throws Exception {
if (username == null || username.isEmpty())
throw new Exception("Session expired");
try {
String scope;
PortalContext pContext = PortalContext.getConfiguration();
if (isWithinPortal() && scopeGroupId != null) {
scope = pContext.getCurrentScope(scopeGroupId);
logger.debug(scope + " has retrieved by using the scopeGroupId=" + scopeGroupId);
} else
scope = pContext.getCurrentScope(request);
logger.debug("Getting " + StorageHubWrapper.class.getSimpleName() + " for user: " + username
+ " by using the scope: " + scope);
String token = pContext.getCurrentUserToken(scope, username);
return new StorageHubWrapper(scope, token, false, false, true);
} catch (Exception e) {
logger.error("Error during getting storageHub wrapper", e);
throw new Exception("Error on gettig the StorageHub wrapper for userId: " + username);
}
}
}