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
41 public class MBDiscussionPermission {
42
43 public static void check(
44 PermissionChecker permissionChecker, long companyId, long groupId,
45 String className, long classPK, long ownerId, String actionId)
46 throws PortalException, SystemException {
47
48 if (!contains(
49 permissionChecker, companyId, groupId, className, classPK,
50 ownerId, actionId)) {
51
52 throw new PrincipalException();
53 }
54 }
55
56 public static void check(
57 PermissionChecker permissionChecker, long companyId, long groupId,
58 String className, long classPK, long messageId, long ownerId,
59 String actionId)
60 throws PortalException, SystemException {
61
62 if (!contains(
63 permissionChecker, companyId, groupId, className, classPK,
64 messageId, ownerId, actionId)) {
65
66 throw new PrincipalException();
67 }
68 }
69
70 public static boolean contains(
71 PermissionChecker permissionChecker, long companyId, long groupId,
72 String className, long classPK, long ownerId, String actionId)
73 throws SystemException {
74
75 if (MBBanLocalServiceUtil.hasBan(
76 groupId, permissionChecker.getUserId())) {
77
78 return false;
79 }
80
81 if (permissionChecker.hasOwnerPermission(
82 companyId, className, classPK, ownerId, actionId)) {
83
84 return true;
85 }
86
87 return permissionChecker.hasPermission(
88 groupId, className, classPK, actionId);
89 }
90
91 public static boolean contains(
92 PermissionChecker permissionChecker, long companyId, long groupId,
93 String className, long classPK, long messageId, long ownerId,
94 String actionId)
95 throws PortalException, SystemException {
96
97 if (!contains(
98 permissionChecker, companyId, groupId, className, classPK,
99 ownerId, actionId)) {
100
101 return false;
102 }
103
104 MBMessage message = MBMessageLocalServiceUtil.getMessage(
105 messageId);
106
107 MBDiscussion discussion =
108 MBDiscussionLocalServiceUtil.getThreadDiscussion(
109 message.getThreadId());
110
111 long classNameId = PortalUtil.getClassNameId(className);
112
113 if ((discussion.getClassNameId() == classNameId) &&
114 (discussion.getClassPK() == classPK)) {
115
116 return true;
117 }
118
119 return false;
120 }
121
122 }