1
14
15 package com.liferay.portlet;
16
17 import com.liferay.portal.model.Group;
18 import com.liferay.portal.model.LayoutConstants;
19 import com.liferay.portal.model.Portlet;
20 import com.liferay.portal.security.permission.ActionKeys;
21 import com.liferay.portal.security.permission.PermissionChecker;
22 import com.liferay.portal.service.permission.PortletPermissionUtil;
23 import com.liferay.portal.theme.ThemeDisplay;
24 import com.liferay.portal.util.PortletCategoryKeys;
25
26
31 public abstract class BaseControlPanelEntry implements ControlPanelEntry {
32
33 public boolean isVisible(
34 Portlet portlet, String category, ThemeDisplay themeDisplay)
35 throws Exception {
36
37 PermissionChecker permissionChecker =
38 themeDisplay.getPermissionChecker();
39
40 if (permissionChecker.isCompanyAdmin()) {
41 return true;
42 }
43
44 Group group = themeDisplay.getScopeGroup();
45
46 long plid = LayoutConstants.DEFAULT_PLID;
47
48 if (category.equals(PortletCategoryKeys.CONTENT)) {
49 plid = group.getDefaultPublicPlid();
50
51 if (plid == LayoutConstants.DEFAULT_PLID) {
52 plid = group.getDefaultPrivatePlid();
53 }
54 }
55
56 if (category.equals(PortletCategoryKeys.CONTENT) &&
57 permissionChecker.isCommunityAdmin(group.getGroupId()) &&
58 !group.isUser()) {
59
60 return true;
61 }
62
63 long groupId = group.getGroupId();
64
65 if (category.equals(PortletCategoryKeys.PORTAL) ||
66 category.equals(PortletCategoryKeys.SERVER)) {
67
68 groupId = 0;
69 }
70
71 if (PortletPermissionUtil.contains(
72 permissionChecker, groupId, plid, portlet.getPortletId(),
73 ActionKeys.ACCESS_IN_CONTROL_PANEL, true)) {
74
75 return true;
76 }
77
78 return isVisible(themeDisplay.getPermissionChecker(), portlet);
79 }
80
81 }