package org.exoplatform.platform.navigation.component.utils;
import org.exoplatform.container.ExoContainer;
import org.exoplatform.container.ExoContainerContext;
import org.exoplatform.portal.application.PortalRequestContext;
import org.exoplatform.portal.webui.util.Util;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
import org.exoplatform.services.security.ConversationState;
import org.exoplatform.social.core.identity.provider.OrganizationIdentityProvider;
import org.exoplatform.social.core.manager.IdentityManager;
import org.exoplatform.web.controller.QualifiedName;
/**
* @author <a href="fbradai@exoplatform.com">Fbradai</a>
*/
public class NavigationUtils {
private static final Log LOG = ExoLogger.getLogger(NavigationUtils.class);
public static String getCurrentUser() {
ExoContainer container = ExoContainerContext.getCurrentContainer();
IdentityManager idm = (IdentityManager) container.getComponentInstanceOfType(IdentityManager.class);
PortalRequestContext request = Util.getPortalRequestContext() ;
String currentPath = request.getControllerContext().getParameter(QualifiedName.parse("gtn:path"));
String []splitCurrentUser = currentPath.split("/");
if (splitCurrentUser.length <= 1) {
// current path doesn't contain user account
return null;
}
String currentUserName = currentPath.split("/")[splitCurrentUser.length - 1];
try {
if ((currentUserName != null)&& (idm.getOrCreateIdentity(OrganizationIdentityProvider.NAME, currentUserName, false) != null)) return currentUserName;
else if (((currentUserName = currentPath.split("/")[splitCurrentUser.length-2]) != null)&&
(idm.getOrCreateIdentity(OrganizationIdentityProvider.NAME, currentUserName, false) != null)) {
return currentUserName;
}
} catch (Exception e) {
LOG.warn("Cannot find Identity of user " + currentUserName, e);
return null;
}
return null;
}
public static String getCurrentLoginUser() {
return ConversationState.getCurrent().getIdentity().getUserId();
}
}