001
014
015 package com.liferay.portlet.polls.service.permission;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.staging.permission.StagingPermissionUtil;
020 import com.liferay.portal.security.auth.PrincipalException;
021 import com.liferay.portal.security.permission.PermissionChecker;
022 import com.liferay.portal.util.PortletKeys;
023 import com.liferay.portlet.polls.model.PollsQuestion;
024 import com.liferay.portlet.polls.service.PollsQuestionLocalServiceUtil;
025
026
029 public class PollsQuestionPermission {
030
031 public static void check(
032 PermissionChecker permissionChecker, long questionId,
033 String actionId)
034 throws PortalException, SystemException {
035
036 if (!contains(permissionChecker, questionId, actionId)) {
037 throw new PrincipalException();
038 }
039 }
040
041 public static void check(
042 PermissionChecker permissionChecker, PollsQuestion question,
043 String actionId)
044 throws PortalException {
045
046 if (!contains(permissionChecker, question, actionId)) {
047 throw new PrincipalException();
048 }
049 }
050
051 public static boolean contains(
052 PermissionChecker permissionChecker, long questionId,
053 String actionId)
054 throws PortalException, SystemException {
055
056 PollsQuestion question = PollsQuestionLocalServiceUtil.getQuestion(
057 questionId);
058
059 return contains(permissionChecker, question, actionId);
060 }
061
062 public static boolean contains(
063 PermissionChecker permissionChecker, PollsQuestion question,
064 String actionId) {
065
066 Boolean hasPermission = StagingPermissionUtil.hasPermission(
067 permissionChecker, question.getGroupId(),
068 PollsQuestion.class.getName(), question.getQuestionId(),
069 PortletKeys.POLLS, actionId);
070
071 if (hasPermission != null) {
072 return hasPermission.booleanValue();
073 }
074
075 if (permissionChecker.hasOwnerPermission(
076 question.getCompanyId(), PollsQuestion.class.getName(),
077 question.getQuestionId(), question.getUserId(), actionId)) {
078
079 return true;
080 }
081
082 return permissionChecker.hasPermission(
083 question.getGroupId(), PollsQuestion.class.getName(),
084 question.getQuestionId(), actionId);
085 }
086
087 }