001
014
015 package com.liferay.portlet;
016
017 import com.liferay.portal.model.Group;
018 import com.liferay.portal.model.LayoutConstants;
019 import com.liferay.portal.model.Portlet;
020 import com.liferay.portal.security.permission.ActionKeys;
021 import com.liferay.portal.security.permission.PermissionChecker;
022 import com.liferay.portal.service.permission.PortletPermissionUtil;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.portal.util.PortletCategoryKeys;
025
026
029 public abstract class BaseControlPanelEntry implements ControlPanelEntry {
030
031 public boolean isVisible(
032 Portlet portlet, String category, ThemeDisplay themeDisplay)
033 throws Exception {
034
035 PermissionChecker permissionChecker =
036 themeDisplay.getPermissionChecker();
037
038 if (permissionChecker.isCompanyAdmin()) {
039 return true;
040 }
041
042 Group group = themeDisplay.getScopeGroup();
043
044 long plid = LayoutConstants.DEFAULT_PLID;
045
046 if (category.equals(PortletCategoryKeys.CONTENT)) {
047 plid = group.getDefaultPublicPlid();
048
049 if (plid == LayoutConstants.DEFAULT_PLID) {
050 plid = group.getDefaultPrivatePlid();
051 }
052 }
053
054 if (category.equals(PortletCategoryKeys.CONTENT) &&
055 permissionChecker.isGroupAdmin(group.getGroupId()) &&
056 !group.isUser()) {
057
058 return true;
059 }
060
061 long groupId = group.getGroupId();
062
063 if (category.equals(PortletCategoryKeys.PORTAL) ||
064 category.equals(PortletCategoryKeys.SERVER)) {
065
066 groupId = 0;
067 }
068
069 if (PortletPermissionUtil.contains(
070 permissionChecker, groupId, plid, portlet.getPortletId(),
071 ActionKeys.ACCESS_IN_CONTROL_PANEL, true)) {
072
073 return true;
074 }
075
076 return isVisible(themeDisplay.getPermissionChecker(), portlet);
077 }
078
079 }