001
014
015 package com.liferay.portlet;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.util.StringPool;
019 import com.liferay.portal.model.Group;
020 import com.liferay.portal.model.LayoutConstants;
021 import com.liferay.portal.model.Portlet;
022 import com.liferay.portal.security.permission.ActionKeys;
023 import com.liferay.portal.security.permission.PermissionChecker;
024 import com.liferay.portal.security.permission.ResourceActionsUtil;
025 import com.liferay.portal.service.permission.PortletPermissionUtil;
026 import com.liferay.portal.theme.ThemeDisplay;
027 import com.liferay.portal.util.PortletCategoryKeys;
028
029 import java.util.List;
030
031
034 public abstract class BaseControlPanelEntry implements ControlPanelEntry {
035
036 @Override
037 public boolean hasAccessPermission(
038 PermissionChecker permissionChecker, Group group, Portlet portlet)
039 throws Exception {
040
041 if (hasAccessPermissionDenied(permissionChecker, group, portlet)) {
042 return false;
043 }
044
045 if (hasAccessPermissionExplicitlyGranted(
046 permissionChecker, group, portlet)) {
047
048 return true;
049 }
050
051 return hasPermissionImplicitlyGranted(
052 permissionChecker, group, portlet);
053 }
054
055
066 @Deprecated
067 @Override
068 public boolean isVisible(
069 PermissionChecker permissionChecker, Portlet portlet)
070 throws Exception {
071
072 return false;
073 }
074
075
086 @Deprecated
087 @Override
088 public boolean isVisible(
089 Portlet portlet, String category, ThemeDisplay themeDisplay)
090 throws Exception {
091
092 return false;
093 }
094
095 protected long getDefaultPlid(Group group, String category) {
096 long plid = LayoutConstants.DEFAULT_PLID;
097
098 if (category.startsWith(PortletCategoryKeys.SITE_ADMINISTRATION)) {
099 plid = group.getDefaultPublicPlid();
100
101 if (plid == LayoutConstants.DEFAULT_PLID) {
102 plid = group.getDefaultPrivatePlid();
103 }
104 }
105
106 return plid;
107 }
108
109 protected boolean hasAccessPermissionDenied(
110 PermissionChecker permissionChecker, Group group, Portlet portlet)
111 throws Exception {
112
113 String category = portlet.getControlPanelEntryCategory();
114
115 if (category.equals(PortletCategoryKeys.SITE_ADMINISTRATION_CONTENT) &&
116 group.isLayout() && !portlet.isScopeable()) {
117
118 return true;
119 }
120
121 return false;
122 }
123
124 protected boolean hasAccessPermissionExplicitlyGranted(
125 PermissionChecker permissionChecker, Group group, Portlet portlet)
126 throws PortalException {
127
128 if (permissionChecker.isCompanyAdmin()) {
129 return true;
130 }
131
132 String category = portlet.getControlPanelEntryCategory();
133
134 if (category == null) {
135 category = StringPool.BLANK;
136 }
137
138 if (category.startsWith(PortletCategoryKeys.SITE_ADMINISTRATION)) {
139 if (permissionChecker.isGroupAdmin(group.getGroupId()) &&
140 !group.isUser()) {
141
142 return true;
143 }
144 }
145
146 long groupId = group.getGroupId();
147
148 if (category.equals(PortletCategoryKeys.CONTROL_PANEL_APPS) ||
149 category.equals(PortletCategoryKeys.CONTROL_PANEL_CONFIGURATION) ||
150 category.equals(PortletCategoryKeys.CONTROL_PANEL_SITES) ||
151 category.equals(PortletCategoryKeys.CONTROL_PANEL_SYSTEM) ||
152 category.equals(PortletCategoryKeys.CONTROL_PANEL_USERS)) {
153
154 groupId = 0;
155 }
156
157 List<String> actions = ResourceActionsUtil.getResourceActions(
158 portlet.getPortletId());
159
160 if (actions.contains(ActionKeys.ACCESS_IN_CONTROL_PANEL) &&
161 PortletPermissionUtil.contains(
162 permissionChecker, groupId, 0, portlet.getRootPortletId(),
163 ActionKeys.ACCESS_IN_CONTROL_PANEL, true)) {
164
165 return true;
166 }
167
168 return false;
169 }
170
171 protected boolean hasPermissionImplicitlyGranted(
172 PermissionChecker permissionChecker, Group group, Portlet portlet)
173 throws Exception {
174
175 String category = portlet.getControlPanelEntryCategory();
176
177 if ((category != null) &&
178 category.equals(PortletCategoryKeys.USER_MY_ACCOUNT)) {
179
180 return true;
181 }
182
183 return false;
184 }
185
186 }