001
014
015 package com.liferay.portlet.documentlibrary.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(
034 property = {
035 "resource.name=com.liferay.portlet.documentlibrary"
036 }
037 )
038 public class DLPermission implements ResourcePermissionChecker {
039
040 public static final String RESOURCE_NAME =
041 "com.liferay.portlet.documentlibrary";
042
043 public static void check(
044 PermissionChecker permissionChecker, long groupId, String actionId)
045 throws PortalException {
046
047 if (!contains(permissionChecker, groupId, actionId)) {
048 throw new PrincipalException();
049 }
050 }
051
052 public static boolean contains(
053 PermissionChecker permissionChecker, long classPK, String actionId) {
054
055 Boolean hasPermission = StagingPermissionUtil.hasPermission(
056 permissionChecker, classPK, RESOURCE_NAME, classPK,
057 PortletKeys.DOCUMENT_LIBRARY, actionId);
058
059 if (hasPermission != null) {
060 return hasPermission.booleanValue();
061 }
062
063 try {
064 int count =
065 ResourcePermissionLocalServiceUtil.getResourcePermissionsCount(
066 permissionChecker.getCompanyId(), RESOURCE_NAME,
067 ResourceConstants.SCOPE_INDIVIDUAL,
068 String.valueOf(classPK));
069
070 if (count == 0) {
071 ResourceLocalServiceUtil.addResources(
072 permissionChecker.getCompanyId(), classPK, 0, RESOURCE_NAME,
073 classPK, false, true, true);
074 }
075 }
076 catch (Exception e) {
077 if (_log.isWarnEnabled()) {
078 _log.warn(e, e);
079 }
080 }
081
082 return permissionChecker.hasPermission(
083 classPK, RESOURCE_NAME, classPK, actionId);
084 }
085
086 @Override
087 public Boolean checkResource(
088 PermissionChecker permissionChecker, long classPK, String actionId) {
089
090 return contains(permissionChecker, classPK, actionId);
091 }
092
093 private static final Log _log = LogFactoryUtil.getLog(DLPermission.class);
094
095 }