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