1
19
20 package com.liferay.portlet.wiki.service.permission;
21
22 import com.liferay.portal.PortalException;
23 import com.liferay.portal.SystemException;
24 import com.liferay.portal.security.auth.PrincipalException;
25 import com.liferay.portal.security.permission.ActionKeys;
26 import com.liferay.portal.security.permission.PermissionChecker;
27 import com.liferay.portlet.wiki.NoSuchPageException;
28 import com.liferay.portlet.wiki.model.WikiNode;
29 import com.liferay.portlet.wiki.model.WikiPage;
30 import com.liferay.portlet.wiki.service.WikiPageLocalServiceUtil;
31
32
38 public class WikiPagePermission {
39
40 public static void check(
41 PermissionChecker permissionChecker, long nodeId, String title,
42 String actionId)
43 throws PortalException, SystemException {
44
45 if (!contains(permissionChecker, nodeId, title, actionId)) {
46 throw new PrincipalException();
47 }
48 }
49
50 public static void check(
51 PermissionChecker permissionChecker, WikiPage page, String actionId)
52 throws PortalException {
53
54 if (!contains(permissionChecker, page, actionId)) {
55 throw new PrincipalException();
56 }
57 }
58
59 public static boolean contains(
60 PermissionChecker permissionChecker, long nodeId, String title,
61 String actionId)
62 throws PortalException, SystemException {
63
64 try {
65 WikiPage page = WikiPageLocalServiceUtil.getPage(nodeId, title);
66
67 return contains(permissionChecker, page, actionId);
68 }
69 catch (NoSuchPageException nspe) {
70 return WikiNodePermission.contains(
71 permissionChecker, nodeId, ActionKeys.ADD_PAGE);
72 }
73 }
74
75 public static boolean contains(
76 PermissionChecker permissionChecker, WikiPage page, String actionId) {
77
78 if (permissionChecker.hasOwnerPermission(
79 page.getCompanyId(), WikiPage.class.getName(), page.getPageId(),
80 page.getUserId(), actionId)) {
81
82 return true;
83 }
84
85 WikiNode node = page.getNode();
86
87 return permissionChecker.hasPermission(
88 node.getGroupId(), WikiPage.class.getName(),
89 page.getResourcePrimKey(), actionId);
90 }
91
92 }