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