001
014
015 package com.liferay.portlet.blogs.service.permission;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.log.Log;
019 import com.liferay.portal.kernel.log.LogFactoryUtil;
020 import com.liferay.portal.kernel.spring.osgi.OSGiBeanProperties;
021 import com.liferay.portal.kernel.staging.permission.StagingPermissionUtil;
022 import com.liferay.portal.model.ResourceConstants;
023 import com.liferay.portal.security.auth.PrincipalException;
024 import com.liferay.portal.security.permission.PermissionChecker;
025 import com.liferay.portal.security.permission.ResourcePermissionChecker;
026 import com.liferay.portal.service.ResourceLocalServiceUtil;
027 import com.liferay.portal.service.ResourcePermissionLocalServiceUtil;
028 import com.liferay.portal.util.PortletKeys;
029
030
033 @OSGiBeanProperties(property = {"resource.name=com.liferay.portlet.blogs"})
034 public class BlogsPermission implements ResourcePermissionChecker {
035
036 public static final String RESOURCE_NAME = "com.liferay.portlet.blogs";
037
038 public static void check(
039 PermissionChecker permissionChecker, long groupId, String actionId)
040 throws PortalException {
041
042 if (!contains(permissionChecker, groupId, actionId)) {
043 throw new PrincipalException();
044 }
045 }
046
047 public static boolean contains(
048 PermissionChecker permissionChecker, long classPK, String actionId) {
049
050 Boolean hasPermission = StagingPermissionUtil.hasPermission(
051 permissionChecker, classPK, RESOURCE_NAME, classPK,
052 PortletKeys.BLOGS, actionId);
053
054 if (hasPermission != null) {
055 return hasPermission.booleanValue();
056 }
057
058 try {
059 int count =
060 ResourcePermissionLocalServiceUtil.getResourcePermissionsCount(
061 permissionChecker.getCompanyId(), RESOURCE_NAME,
062 ResourceConstants.SCOPE_INDIVIDUAL,
063 String.valueOf(classPK));
064
065 if (count == 0) {
066 ResourceLocalServiceUtil.addResources(
067 permissionChecker.getCompanyId(), classPK, 0, RESOURCE_NAME,
068 classPK, false, true, true);
069 }
070 }
071 catch (Exception e) {
072 if (_log.isWarnEnabled()) {
073 _log.warn(e, e);
074 }
075 }
076
077 return permissionChecker.hasPermission(
078 classPK, RESOURCE_NAME, classPK, actionId);
079 }
080
081 @Override
082 public Boolean checkResource(
083 PermissionChecker permissionChecker, long classPK, String actionId) {
084
085 return contains(permissionChecker, classPK, actionId);
086 }
087
088 private static final Log _log = LogFactoryUtil.getLog(
089 BlogsPermission.class);
090
091 }