001
014
015 package com.liferay.portlet.announcements.service.permission;
016
017 import com.liferay.announcements.kernel.model.AnnouncementsEntry;
018 import com.liferay.announcements.kernel.service.AnnouncementsEntryLocalServiceUtil;
019 import com.liferay.portal.kernel.exception.PortalException;
020 import com.liferay.portal.kernel.model.Layout;
021 import com.liferay.portal.kernel.model.ResourceConstants;
022 import com.liferay.portal.kernel.model.impl.VirtualLayout;
023 import com.liferay.portal.kernel.security.auth.PrincipalException;
024 import com.liferay.portal.kernel.security.permission.PermissionChecker;
025 import com.liferay.portal.kernel.service.LayoutLocalServiceUtil;
026 import com.liferay.portal.kernel.service.ResourcePermissionLocalServiceUtil;
027 import com.liferay.portal.kernel.service.permission.PortletPermissionUtil;
028
029
032 public class AnnouncementsEntryPermission {
033
034 public static void check(
035 PermissionChecker permissionChecker, AnnouncementsEntry entry,
036 String actionId)
037 throws PortalException {
038
039 if (!contains(permissionChecker, entry, actionId)) {
040 throw new PrincipalException.MustHavePermission(
041 permissionChecker, AnnouncementsEntry.class.getName(),
042 entry.getEntryId(), actionId);
043 }
044 }
045
046 public static void check(
047 PermissionChecker permissionChecker, Layout layout, String name,
048 String actionId)
049 throws PortalException {
050
051 if (!contains(permissionChecker, layout, name, actionId)) {
052 throw new PrincipalException.MustHavePermission(
053 permissionChecker, AnnouncementsEntry.class.getName(), name,
054 actionId);
055 }
056 }
057
058 public static void check(
059 PermissionChecker permissionChecker, long entryId, String actionId)
060 throws PortalException {
061
062 if (!contains(permissionChecker, entryId, actionId)) {
063 throw new PrincipalException.MustHavePermission(
064 permissionChecker, AnnouncementsEntry.class.getName(), entryId,
065 actionId);
066 }
067 }
068
069 public static void check(
070 PermissionChecker permissionChecker, long plid, String portletId,
071 String actionId)
072 throws PortalException {
073
074 if (!contains(permissionChecker, plid, portletId, actionId)) {
075 throw new PrincipalException.MustHavePermission(
076 permissionChecker, AnnouncementsEntry.class.getName(),
077 portletId, actionId);
078 }
079 }
080
081 public static boolean contains(
082 PermissionChecker permissionChecker, AnnouncementsEntry entry,
083 String actionId)
084 throws PortalException {
085
086 if (permissionChecker.hasOwnerPermission(
087 entry.getCompanyId(), AnnouncementsEntry.class.getName(),
088 entry.getEntryId(), entry.getUserId(), actionId)) {
089
090 return true;
091 }
092
093 return permissionChecker.hasPermission(
094 entry.getGroupId(), AnnouncementsEntry.class.getName(),
095 entry.getEntryId(), actionId);
096 }
097
098 public static boolean contains(
099 PermissionChecker permissionChecker, Layout layout, String portletId,
100 String actionId) {
101
102 if (layout instanceof VirtualLayout) {
103 VirtualLayout virtualLayout = (VirtualLayout)layout;
104
105 layout = virtualLayout.getSourceLayout();
106 }
107
108 boolean useDefaultPortletPermissions = false;
109
110 String primKey = PortletPermissionUtil.getPrimaryKey(
111 layout.getPlid(), portletId);
112
113 int count =
114 ResourcePermissionLocalServiceUtil.getResourcePermissionsCount(
115 permissionChecker.getCompanyId(), portletId,
116 ResourceConstants.SCOPE_INDIVIDUAL, primKey);
117
118 if (count == 0) {
119 useDefaultPortletPermissions = true;
120 }
121
122 if (useDefaultPortletPermissions) {
123 primKey = portletId;
124 }
125
126 return permissionChecker.hasPermission(
127 layout.getGroupId(), portletId, primKey, actionId);
128 }
129
130 public static boolean contains(
131 PermissionChecker permissionChecker, long entryId, String actionId)
132 throws PortalException {
133
134 AnnouncementsEntry entry = AnnouncementsEntryLocalServiceUtil.getEntry(
135 entryId);
136
137 return contains(permissionChecker, entry, actionId);
138 }
139
140 public static boolean contains(
141 PermissionChecker permissionChecker, long plid, String name,
142 String actionId) {
143
144 Layout layout = LayoutLocalServiceUtil.fetchLayout(plid);
145
146 return contains(permissionChecker, layout, name, actionId);
147 }
148
149 }