Package com.liferay.faces.portal.context

Source Code of com.liferay.faces.portal.context.LiferayPortletHelperImpl

/**
* Copyright (c) 2000-2014 Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.faces.portal.context;

import java.io.Serializable;
import java.util.List;

import javax.faces.context.FacesContext;
import javax.portlet.PortletRequest;

import com.liferay.faces.portal.bean.Liferay;
import com.liferay.faces.portal.security.AuthorizationException;
import com.liferay.faces.util.logging.Logger;
import com.liferay.faces.util.logging.LoggerFactory;
import com.liferay.faces.util.portal.WebKeys;

import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.model.Group;
import com.liferay.portal.model.Layout;
import com.liferay.portal.model.Portlet;
import com.liferay.portal.model.Role;
import com.liferay.portal.model.Theme;
import com.liferay.portal.model.User;
import com.liferay.portal.security.permission.PermissionChecker;
import com.liferay.portal.service.RoleLocalServiceUtil;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portal.service.UserLocalServiceUtil;
import com.liferay.portal.service.permission.PortletPermissionUtil;
import com.liferay.portal.theme.ThemeDisplay;
import com.liferay.portal.util.PortalUtil;


/**
* @author  Neil Griffin
*/
public class LiferayPortletHelperImpl implements LiferayPortletHelper, Serializable {

  // serialVersionUID
  private static final long serialVersionUID = 3313208322138123167L;

  // Logger
  private static final Logger logger = LoggerFactory.getLogger(LiferayPortletHelperImpl.class);

  public void checkUserPortletPermission(String actionId) throws AuthorizationException {

    try {

      if (!userHasPortletPermission(actionId)) {
        throw new AuthorizationException("User " + getUserId() + " not authorized to perform action " +
          actionId);
      }
    }
    catch (Exception e) {
      throw new AuthorizationException("Exception checking permissions for actionId " + actionId, e);

    }
  }

  public boolean userHasPortletPermission(String actionId) {
    ThemeDisplay themeDisplay = getThemeDisplay();
    PermissionChecker permissionChecker = themeDisplay.getPermissionChecker();
    String portletId = themeDisplay.getPortletDisplay().getId();
    boolean hasPermission = false;

    try {
      hasPermission = PortletPermissionUtil.contains(permissionChecker, themeDisplay.getPlid(), portletId,
          actionId);
    }
    catch (Exception e) {
      logger.error(e.getMessage(), e);
    }

    return hasPermission;
  }

  public boolean userHasRole(String roleName) {

    try {
      List<Role> roles = getUserRoles();

      for (Role role : roles) {

        if (role.getName().equals(roleName)) {
          return true;
        }
      }

    }
    catch (Exception e) {
      logger.error(e.getMessage(), e);
    }

    return false;

  }

  public long getCompanyId() {
    return getThemeDisplay().getCompanyId();
  }

  public String getDocumentLibraryURL() {
    return getPortalURL() + "/c/document_library";
  }

  public long getHostGroupId() {
    return getLayout().getGroupId();
  }

  public String getImageGalleryURL() {
    return getPortalURL() + "/image_gallery";
  }

  public Layout getLayout() {
    return getThemeDisplay().getLayout();
  }

  protected Liferay getLiferayManagedBean() {
    FacesContext facesContext = FacesContext.getCurrentInstance();

    return (Liferay) facesContext.getApplication().getELResolver().getValue(facesContext.getELContext(), null,
        "liferay");
  }

  public PermissionChecker getPermissionChecker() {
    return getThemeDisplay().getPermissionChecker();
  }

  public long getPlid() {
    return getThemeDisplay().getPlid();
  }

  public String getPortalURL() {
    return getThemeDisplay().getPortalURL();
  }

  public Portlet getPortlet() {

    // Attempt to get the Portlet object from the "RENDER_PORTLET" request attribute.
    Portlet portlet = (Portlet) getPortletRequest().getAttribute(WebKeys.RENDER_PORTLET);

    // FACES-1212: If the request attribute was null, then this method is being called outside of the RENDER_PHASE
    // of the portlet lifecycle. In that case, use the cached version of the Portlet object from the "liferay"
    // ViewScoped managed-bean.
    if (portlet == null) {
      portlet = getLiferayManagedBean().getPortlet();
    }

    return portlet;
  }

  public String getPortletInstanceId() {
    return getPortlet().getPortletId();
  }

  protected PortletRequest getPortletRequest() {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    PortletRequest portletRequest = (PortletRequest) facesContext.getExternalContext().getRequest();

    return portletRequest;
  }

  public String getPortletRootId() {
    return getPortlet().getRootPortletId();
  }

  public Group getScopeGroup() {
    return getThemeDisplay().getScopeGroup();
  }

  public long getScopeGroupId() {
    return getThemeDisplay().getScopeGroupId();
  }

  public User getScopeGroupUser() {
    User groupUser = null;
    Group scopeGroup = getScopeGroup();

    if (scopeGroup.isUser()) {

      try {
        groupUser = UserLocalServiceUtil.getUserById(scopeGroup.getClassPK());
      }
      catch (Exception e) {
        logger.error(e.getMessage(), e);
      }
    }

    return groupUser;
  }

  public ServiceContext getServiceContext() {

    ServiceContext serviceContext = new ServiceContext();
    ThemeDisplay themeDisplay = getThemeDisplay();
    serviceContext.setCompanyId(themeDisplay.getCompanyId());
    serviceContext.setLanguageId(themeDisplay.getLanguageId());
    serviceContext.setPathMain(PortalUtil.getPathMain());
    serviceContext.setPlid(themeDisplay.getPlid());
    serviceContext.setPortalURL(PortalUtil.getPortalURL(getPortletRequest()));
    serviceContext.setScopeGroupId(themeDisplay.getScopeGroupId());
    serviceContext.setUserId(themeDisplay.getUserId());

    try {
      serviceContext.setLayoutFullURL(PortalUtil.getLayoutFullURL(themeDisplay));
      serviceContext.setLayoutURL(PortalUtil.getLayoutURL(themeDisplay));
      serviceContext.setUserDisplayURL(themeDisplay.getUser().getDisplayURL(themeDisplay));
    }
    catch (Exception e) {
      logger.error(e.getMessage(), e);
    }

    return serviceContext;
  }

  public Theme getTheme() {
    return getThemeDisplay().getTheme();
  }

  public ThemeDisplay getThemeDisplay() {
    ThemeDisplay themeDisplay = (ThemeDisplay) getPortletRequest().getAttribute(WebKeys.THEME_DISPLAY);

    return themeDisplay;
  }

  public String getThemeImagesURL() {

    String portalURL = null;
    ThemeDisplay themeDisplay = getThemeDisplay();
    String cdnHost = themeDisplay.getCDNHost();

    if ((cdnHost != null) && (cdnHost.length() > 0)) {
      portalURL = cdnHost;
    }
    else {
      portalURL = themeDisplay.getPortalURL();
    }

    String pathThemeImages = themeDisplay.getPathThemeImages();

    if (pathThemeImages.startsWith(portalURL)) {

      // The portalURL will already be included for versions of Liferay Portal newer than 6.1.0 CE GA1
      return pathThemeImages;
    }
    else {
      return portalURL + pathThemeImages;
    }
  }

  public User getUser() {
    return getThemeDisplay().getUser();
  }

  public long getUserId() {
    return getUser().getUserId();
  }

  public List<Role> getUserRoles() throws SystemException {
    return RoleLocalServiceUtil.getUserRoles(getUserId());
  }

}
TOP

Related Classes of com.liferay.faces.portal.context.LiferayPortletHelperImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.