001
014
015 package com.liferay.portal.service.permission;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.model.Group;
020 import com.liferay.portal.security.auth.PrincipalException;
021 import com.liferay.portal.security.permission.ActionKeys;
022 import com.liferay.portal.security.permission.PermissionChecker;
023 import com.liferay.portal.service.GroupLocalServiceUtil;
024 import com.liferay.portlet.blogs.model.BlogsEntry;
025 import com.liferay.portlet.blogs.service.permission.BlogsPermission;
026 import com.liferay.portlet.journal.model.JournalArticle;
027 import com.liferay.portlet.journal.service.permission.JournalPermission;
028 import com.liferay.portlet.messageboards.model.MBCategory;
029 import com.liferay.portlet.messageboards.model.MBThread;
030 import com.liferay.portlet.messageboards.service.MBThreadLocalServiceUtil;
031 import com.liferay.portlet.messageboards.service.permission.MBCategoryPermission;
032 import com.liferay.portlet.messageboards.service.permission.MBMessagePermission;
033 import com.liferay.portlet.messageboards.service.permission.MBPermission;
034 import com.liferay.portlet.wiki.model.WikiNode;
035 import com.liferay.portlet.wiki.model.WikiPage;
036 import com.liferay.portlet.wiki.service.permission.WikiNodePermission;
037 import com.liferay.portlet.wiki.service.permission.WikiPagePermission;
038
039
042 public class SubscriptionPermissionImpl implements SubscriptionPermission {
043
044 public void check(
045 PermissionChecker permissionChecker, String className, long classPK)
046 throws PortalException, SystemException {
047
048 if (!contains(permissionChecker, className, classPK)) {
049 throw new PrincipalException();
050 }
051 }
052
053 public boolean contains(
054 PermissionChecker permissionChecker, String className, long classPK)
055 throws PortalException, SystemException {
056
057 if (className == null) {
058 return false;
059 }
060
061 if (className.equals(BlogsEntry.class.getName())) {
062 return BlogsPermission.contains(
063 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
064 }
065 else if (className.equals(JournalArticle.class.getName())) {
066 return JournalPermission.contains(
067 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
068 }
069 else if (className.equals(MBCategory.class.getName())) {
070 Group group = GroupLocalServiceUtil.fetchGroup(classPK);
071
072 if (group == null) {
073 return MBCategoryPermission.contains(
074 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
075 }
076 else {
077 return MBPermission.contains(
078 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
079 }
080 }
081 else if (className.equals(MBThread.class.getName())) {
082 MBThread thread = MBThreadLocalServiceUtil.fetchThread(classPK);
083
084 return MBMessagePermission.contains(
085 permissionChecker, thread.getRootMessageId(),
086 ActionKeys.SUBSCRIBE);
087 }
088 else if (className.equals(WikiNode.class.getName())) {
089 return WikiNodePermission.contains(
090 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
091 }
092 else if (className.equals(WikiPage.class.getName())) {
093 return WikiPagePermission.contains(
094 permissionChecker, classPK, ActionKeys.SUBSCRIBE);
095 }
096
097 return true;
098 }
099
100 }