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.ActionKeys;
29 import com.liferay.portal.security.permission.PermissionChecker;
30 import com.liferay.portal.util.PropsValues;
31 import com.liferay.portlet.messageboards.model.MBCategory;
32 import com.liferay.portlet.messageboards.model.MBMessage;
33 import com.liferay.portlet.messageboards.service.MBBanLocalServiceUtil;
34 import com.liferay.portlet.messageboards.service.MBCategoryLocalServiceUtil;
35 import com.liferay.portlet.messageboards.service.MBMessageLocalServiceUtil;
36
37
42 public class MBMessagePermission {
43
44 public static void check(
45 PermissionChecker permissionChecker, long messageId,
46 String actionId)
47 throws PortalException, SystemException {
48
49 if (!contains(permissionChecker, messageId, actionId)) {
50 throw new PrincipalException();
51 }
52 }
53
54 public static void check(
55 PermissionChecker permissionChecker, MBMessage message,
56 String actionId)
57 throws PortalException, SystemException {
58
59 if (!contains(permissionChecker, message, actionId)) {
60 throw new PrincipalException();
61 }
62 }
63
64 public static boolean contains(
65 PermissionChecker permissionChecker, long messageId,
66 String actionId)
67 throws PortalException, SystemException {
68
69 MBMessage message = MBMessageLocalServiceUtil.getMessage(messageId);
70
71 return contains(permissionChecker, message, actionId);
72 }
73
74 public static boolean contains(
75 PermissionChecker permissionChecker, MBMessage message,
76 String actionId)
77 throws PortalException, SystemException {
78
79 long groupId = message.getGroupId();
80
81 if (MBBanLocalServiceUtil.hasBan(
82 groupId, permissionChecker.getUserId())) {
83
84 return false;
85 }
86
87 MBCategory category = MBCategoryLocalServiceUtil.getCategory(
88 message.getCategoryId());
89
90 if (PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) {
91 if (!MBCategoryPermission.contains(
92 permissionChecker, category, ActionKeys.VIEW)) {
93
94 return false;
95 }
96 }
97
98 if (permissionChecker.hasOwnerPermission(
99 message.getCompanyId(), MBMessage.class.getName(),
100 message.getMessageId(), message.getUserId(), actionId)) {
101
102 return true;
103 }
104
105 return permissionChecker.hasPermission(
106 groupId, MBMessage.class.getName(), message.getMessageId(),
107 actionId);
108 }
109
110 }