1
22
23 package com.liferay.portlet.messageboards.service.permission;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.security.auth.PrincipalException;
28 import com.liferay.portal.security.permission.PermissionChecker;
29 import com.liferay.portal.util.PortalUtil;
30 import com.liferay.portlet.messageboards.model.MBDiscussion;
31 import com.liferay.portlet.messageboards.model.MBMessage;
32 import com.liferay.portlet.messageboards.service.MBBanLocalServiceUtil;
33 import com.liferay.portlet.messageboards.service.MBDiscussionLocalServiceUtil;
34 import com.liferay.portlet.messageboards.service.MBMessageLocalServiceUtil;
35
36
42 public class MBDiscussionPermission {
43
44 public static void check(
45 PermissionChecker permissionChecker, long companyId, long groupId,
46 String className, long classPK, long ownerId, String actionId)
47 throws PortalException, SystemException {
48
49 if (!contains(
50 permissionChecker, companyId, groupId, className, classPK,
51 ownerId, actionId)) {
52
53 throw new PrincipalException();
54 }
55 }
56
57 public static void check(
58 PermissionChecker permissionChecker, long companyId, long groupId,
59 String className, long classPK, long messageId, long ownerId,
60 String actionId)
61 throws PortalException, SystemException {
62
63 if (!contains(
64 permissionChecker, companyId, groupId, className, classPK,
65 messageId, ownerId, actionId)) {
66
67 throw new PrincipalException();
68 }
69 }
70
71 public static boolean contains(
72 PermissionChecker permissionChecker, long companyId, long groupId,
73 String className, long classPK, long ownerId, String actionId)
74 throws SystemException {
75
76 if (MBBanLocalServiceUtil.hasBan(
77 groupId, permissionChecker.getUserId())) {
78
79 return false;
80 }
81
82 if (permissionChecker.hasOwnerPermission(
83 companyId, className, classPK, ownerId, actionId)) {
84
85 return true;
86 }
87
88 return permissionChecker.hasPermission(
89 groupId, className, classPK, actionId);
90 }
91
92 public static boolean contains(
93 PermissionChecker permissionChecker, long companyId, long groupId,
94 String className, long classPK, long messageId, long ownerId,
95 String actionId)
96 throws PortalException, SystemException {
97
98 if (!contains(
99 permissionChecker, companyId, groupId, className, classPK,
100 ownerId, actionId)) {
101
102 return false;
103 }
104
105 MBMessage message = MBMessageLocalServiceUtil.getMessage(
106 messageId);
107
108 MBDiscussion discussion =
109 MBDiscussionLocalServiceUtil.getThreadDiscussion(
110 message.getThreadId());
111
112 long classNameId = PortalUtil.getClassNameId(className);
113
114 if ((discussion.getClassNameId() == classNameId) &&
115 (discussion.getClassPK() == classPK)) {
116
117 return true;
118 }
119
120 return false;
121 }
122
123 }