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