1
14
15 package com.liferay.portlet.documentlibrary.service.permission;
16
17 import com.liferay.portal.kernel.exception.PortalException;
18 import com.liferay.portal.kernel.exception.SystemException;
19 import com.liferay.portal.security.auth.PrincipalException;
20 import com.liferay.portal.security.permission.ActionKeys;
21 import com.liferay.portal.security.permission.PermissionChecker;
22 import com.liferay.portal.util.PropsValues;
23 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
24 import com.liferay.portlet.documentlibrary.model.DLFolder;
25 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
26 import com.liferay.portlet.documentlibrary.service.DLFileEntryLocalServiceUtil;
27 import com.liferay.portlet.documentlibrary.service.DLFolderLocalServiceUtil;
28
29
35 public class DLFileEntryPermission {
36
37 public static void check(
38 PermissionChecker permissionChecker, DLFileEntry fileEntry,
39 String actionId)
40 throws PortalException, SystemException {
41
42 if (!contains(permissionChecker, fileEntry, actionId)) {
43 throw new PrincipalException();
44 }
45 }
46
47 public static void check(
48 PermissionChecker permissionChecker, long groupId, long folderId,
49 String name, String actionId)
50 throws PortalException, SystemException {
51
52 if (!contains(permissionChecker, groupId, folderId, name, actionId)) {
53 throw new PrincipalException();
54 }
55 }
56
57 public static void check(
58 PermissionChecker permissionChecker, long fileEntryId,
59 String actionId)
60 throws PortalException, SystemException {
61
62 if (!contains(permissionChecker, fileEntryId, actionId)) {
63 throw new PrincipalException();
64 }
65 }
66
67 public static boolean contains(
68 PermissionChecker permissionChecker, DLFileEntry fileEntry,
69 String actionId)
70 throws PortalException, SystemException {
71
72 if (PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) {
73 if (fileEntry.getFolderId() !=
74 DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
75
76 DLFolder folder = DLFolderLocalServiceUtil.getFolder(
77 fileEntry.getFolderId());
78
79 if (!DLFolderPermission.contains(
80 permissionChecker, folder, ActionKeys.ACCESS) &&
81 !DLFolderPermission.contains(
82 permissionChecker, folder, ActionKeys.VIEW)) {
83
84 return false;
85 }
86 }
87 }
88
89 if (permissionChecker.hasOwnerPermission(
90 fileEntry.getCompanyId(), DLFileEntry.class.getName(),
91 fileEntry.getFileEntryId(), fileEntry.getUserId(), actionId)) {
92
93 return true;
94 }
95
96 return permissionChecker.hasPermission(
97 fileEntry.getGroupId(), DLFileEntry.class.getName(),
98 fileEntry.getFileEntryId(), actionId);
99 }
100
101 public static boolean contains(
102 PermissionChecker permissionChecker, long groupId, long folderId,
103 String name, String actionId)
104 throws PortalException, SystemException {
105
106 DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
107 groupId, folderId, name);
108
109 return contains(permissionChecker, fileEntry, actionId);
110 }
111
112 public static boolean contains(
113 PermissionChecker permissionChecker, long fileEntryId,
114 String actionId)
115 throws PortalException, SystemException {
116
117 DLFileEntry fileEntry = DLFileEntryLocalServiceUtil.getFileEntry(
118 fileEntryId);
119
120 return contains(permissionChecker, fileEntry, actionId);
121 }
122
123 }