diff --git a/pom.xml b/pom.xml
index 694cb41..22ea4c7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
distro
1.7
1.7
-
+ 6.2.5
UTF-8
UTF-8
@@ -33,9 +33,39 @@
javax.servlet
servlet-api
- 2.5
+ 2.4
provided
+
+ javax.portlet
+ portlet-api
+ 2.0
+ provided
+
+
+ com.liferay.portal
+ portal-service
+ ${liferay.version}
+ provided
+
+
+ com.liferay.portal
+ util-java
+ ${liferay.version}
+ provided
+
+
+ com.liferay.portal
+ util-bridges
+ ${liferay.version}
+ provided
+
+
+ com.liferay.portal
+ util-taglib
+ ${liferay.version}
+ provided
+
org.slf4j
slf4j-log4j12
diff --git a/src/main/java/org/gcube/common/portal/GCubePortalConstants.java b/src/main/java/org/gcube/common/portal/GCubePortalConstants.java
index 4fa9069..6e0f5f7 100644
--- a/src/main/java/org/gcube/common/portal/GCubePortalConstants.java
+++ b/src/main/java/org/gcube/common/portal/GCubePortalConstants.java
@@ -1,7 +1,13 @@
package org.gcube.common.portal;
+import com.liferay.portal.kernel.util.PropsKeys;
+import com.liferay.portal.kernel.util.PropsUtil;
+
public class GCubePortalConstants {
public static final String PREFIX_GROUP_URL = "/group";
+ public static final String GUEST_GROUP_FRIENDLY_URL = "/guest";
+ public static final String PRIVATE_GROUP_SERVLET_MAPPING = PropsUtil.get(PropsKeys.LAYOUT_FRIENDLY_URL_PRIVATE_GROUP_SERVLET_MAPPING);
+
public static final String INFRASTRUCTURE_NAME = "infrastructure";
public static final String SCOPES = "scopes";
diff --git a/src/main/java/org/gcube/common/portal/PortalContext.java b/src/main/java/org/gcube/common/portal/PortalContext.java
index c649d07..ba359b6 100644
--- a/src/main/java/org/gcube/common/portal/PortalContext.java
+++ b/src/main/java/org/gcube/common/portal/PortalContext.java
@@ -12,6 +12,19 @@ import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.liferay.portal.kernel.exception.PortalException;
+import com.liferay.portal.kernel.exception.SystemException;
+import com.liferay.portal.kernel.util.StringBundler;
+import com.liferay.portal.kernel.util.StringPool;
+import com.liferay.portal.model.Group;
+import com.liferay.portal.model.User;
+import com.liferay.portal.model.VirtualHost;
+import com.liferay.portal.service.GroupLocalServiceUtil;
+import com.liferay.portal.service.LayoutSetLocalServiceUtil;
+import com.liferay.portal.service.UserLocalServiceUtil;
+import com.liferay.portal.service.VirtualHostLocalServiceUtil;
+import com.liferay.portal.util.PortalUtil;
+
@@ -24,6 +37,9 @@ import org.slf4j.LoggerFactory;
*/
public class PortalContext {
private static final Logger _log = LoggerFactory.getLogger(PortalContext.class);
+ public static final String PORTAL_CONTEXT = PortalUtil.getPathContext();
+
+
private static PortalContext singleton = new PortalContext();
private String infra;
@@ -111,7 +127,53 @@ public class PortalContext {
toReturn += (httpServletRequest.getServerPort() == 80) ? "" : ":"+httpServletRequest.getServerPort() ;
return toReturn;
}
-
+ /**
+ *
+ * @param request
+ * @return the landing page path of the current Site e.g. "/group/i-marine"
+ * @throws PortalException
+ * @throws SystemException
+ */
+ public String getSiteLandingPagePath(final HttpServletRequest request) throws PortalException, SystemException {
+ String sitePath = StringPool.BLANK;
+ String serverName = request.getServerName();
+ _log.debug("currentHost is " + serverName);
+ Group site = null;
+ List vHosts = VirtualHostLocalServiceUtil.getVirtualHosts(0, VirtualHostLocalServiceUtil.getVirtualHostsCount());
+ for (VirtualHost virtualHost : vHosts) {
+ _log.debug("Found " + virtualHost.getHostname());
+ if (virtualHost.getHostname().compareTo("localhost") != 0 &&
+ virtualHost.getLayoutSetId() != 0 &&
+ virtualHost.getHostname().compareTo(serverName) == 0) {
+ long layoutSetId = virtualHost.getLayoutSetId();
+ site = LayoutSetLocalServiceUtil.getLayoutSet(layoutSetId).getGroup();
+ _log.debug("Found match! Your site is " + site.getName());
+ }
+ }
+ if (site.getPrivateLayoutsPageCount() > 0) {
+ sitePath = getGroupFriendlyURL(request, site);
+ } else {
+ _log.debug(site.getName() + " site doesn't have any private page. Default landing page will be used");
+ }
+ return sitePath;
+ }
+ /**
+ * @param request
+ * @param currentGroup
+ * @param isPrivate
+ * @param isUser
+ * @return
+ * @throws PortalException
+ * @throws SystemException
+ */
+ private static String getGroupFriendlyURL(final HttpServletRequest request, final Group currentGroup) throws PortalException, SystemException {
+ String friendlyURL = GCubePortalConstants.PRIVATE_GROUP_SERVLET_MAPPING;
+ StringBundler sb = new StringBundler();
+ sb.append(PORTAL_CONTEXT);
+ sb.append(friendlyURL);
+ sb.append(currentGroup.getFriendlyURL());
+ return sb.toString();
+ }
/**
* read the infrastructure gateway name from a property file and returns it
*/