1
22
23 package com.liferay.portlet.documentlibrary.service.permission;
24
25 import com.liferay.portal.PortalException;
26 import com.liferay.portal.SystemException;
27 import com.liferay.portal.kernel.security.permission.PermissionChecker;
28 import com.liferay.portal.security.auth.PrincipalException;
29 import com.liferay.portal.service.permission.PortletPermissionUtil;
30 import com.liferay.portal.util.PortletKeys;
31 import com.liferay.portlet.documentlibrary.model.DLFolder;
32 import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
33 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
34
35
41 public class DLFolderPermission {
42
43 public static void check(
44 PermissionChecker permissionChecker, long plid, long folderId,
45 String actionId)
46 throws PortalException, SystemException {
47
48 if (!contains(permissionChecker, plid, folderId, actionId)) {
49 throw new PrincipalException();
50 }
51 }
52
53 public static void check(
54 PermissionChecker permissionChecker, long folderId, String actionId)
55 throws PortalException, SystemException {
56
57 if (!contains(permissionChecker, folderId, actionId)) {
58 throw new PrincipalException();
59 }
60 }
61
62 public static void check(
63 PermissionChecker permissionChecker, DLFolder folder,
64 String actionId)
65 throws PortalException, SystemException {
66
67 if (!contains(permissionChecker, folder, actionId)) {
68 throw new PrincipalException();
69 }
70 }
71
72 public static boolean contains(
73 PermissionChecker permissionChecker, long plid, long folderId,
74 String actionId)
75 throws PortalException, SystemException {
76
77 if (folderId == DLFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
78 return PortletPermissionUtil.contains(
79 permissionChecker, plid, PortletKeys.DOCUMENT_LIBRARY,
80 actionId);
81 }
82 else {
83 return contains(permissionChecker, folderId, actionId);
84 }
85 }
86
87 public static boolean contains(
88 PermissionChecker permissionChecker, long folderId, String actionId)
89 throws PortalException, SystemException {
90
91 DLFolder folder = DLFolderLocalServiceUtil.getFolder(folderId);
92
93 return contains(permissionChecker, folder, actionId);
94 }
95
96 public static boolean contains(
97 PermissionChecker permissionChecker, DLFolder folder,
98 String actionId)
99 throws PortalException, SystemException {
100
101 long folderId = folder.getFolderId();
102
103 while (folderId != DLFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
104 folder = DLFolderLocalServiceUtil.getFolder(folderId);
105
106 folderId = folder.getParentFolderId();
107
108 if (permissionChecker.hasPermission(
109 folder.getGroupId(), DLFolder.class.getName(),
110 folder.getFolderId(), actionId)) {
111
112 return true;
113 }
114 }
115
116 return false;
117 }
118
119 }