001
014
015 package com.liferay.portal.util;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.model.Group;
019 import com.liferay.portal.model.ResourceAction;
020 import com.liferay.portal.model.Subscription;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.security.permission.PermissionChecker;
023 import com.liferay.portal.security.permission.ResourcePermissionCheckerUtil;
024 import com.liferay.portal.service.GroupLocalServiceUtil;
025 import com.liferay.portal.service.ResourceActionLocalServiceUtil;
026
027
030 public class GroupSubscriptionCheckSubscriptionSender
031 extends SubscriptionSender {
032
033 public GroupSubscriptionCheckSubscriptionSender(String resourceName) {
034 _resourceName = resourceName;
035 }
036
037 @Override
038 protected Boolean hasSubscribePermission(
039 PermissionChecker permissionChecker, Subscription subscription)
040 throws PortalException {
041
042 Group group = GroupLocalServiceUtil.fetchGroup(
043 subscription.getClassPK());
044
045 if (group != null) {
046 ResourceAction resourceAction =
047 ResourceActionLocalServiceUtil.fetchResourceAction(
048 subscription.getClassName(), ActionKeys.SUBSCRIBE);
049
050 if (resourceAction == null) {
051 return true;
052 }
053
054 return ResourcePermissionCheckerUtil.containsResourcePermission(
055 permissionChecker, _resourceName, subscription.getClassPK(),
056 ActionKeys.SUBSCRIBE);
057 }
058 else {
059 return super.hasSubscribePermission(
060 permissionChecker, subscription);
061 }
062 }
063
064 private final String _resourceName;
065
066 }