1
22
23 package com.liferay.portlet.bookmarks.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.portal.service.permission.PortletPermissionUtil;
31 import com.liferay.portal.util.PortletKeys;
32 import com.liferay.portal.util.PropsValues;
33 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
34 import com.liferay.portlet.bookmarks.model.impl.BookmarksFolderImpl;
35 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
36
37
42 public class BookmarksFolderPermission {
43
44 public static void check(
45 PermissionChecker permissionChecker, long plid, long folderId,
46 String actionId)
47 throws PortalException, SystemException {
48
49 if (!contains(permissionChecker, plid, folderId, actionId)) {
50 throw new PrincipalException();
51 }
52 }
53
54 public static void check(
55 PermissionChecker permissionChecker, long folderId,
56 String actionId)
57 throws PortalException, SystemException {
58
59 if (!contains(permissionChecker, folderId, actionId)) {
60 throw new PrincipalException();
61 }
62 }
63
64 public static void check(
65 PermissionChecker permissionChecker, BookmarksFolder folder,
66 String actionId)
67 throws PortalException, SystemException {
68
69 if (!contains(permissionChecker, folder, actionId)) {
70 throw new PrincipalException();
71 }
72 }
73
74 public static boolean contains(
75 PermissionChecker permissionChecker, long plid, long folderId,
76 String actionId)
77 throws PortalException, SystemException {
78
79 if (folderId == BookmarksFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
80 return PortletPermissionUtil.contains(
81 permissionChecker, plid, PortletKeys.BOOKMARKS, actionId);
82 }
83 else {
84 return contains(permissionChecker, folderId, actionId);
85 }
86 }
87
88 public static boolean contains(
89 PermissionChecker permissionChecker, long folderId,
90 String actionId)
91 throws PortalException, SystemException {
92
93 BookmarksFolder folder =
94 BookmarksFolderLocalServiceUtil.getFolder(folderId);
95
96 return contains(permissionChecker, folder, actionId);
97 }
98
99 public static boolean contains(
100 PermissionChecker permissionChecker, BookmarksFolder folder,
101 String actionId)
102 throws PortalException, SystemException {
103
104 if (actionId.equals(ActionKeys.ADD_FOLDER)) {
105 actionId = ActionKeys.ADD_SUBFOLDER;
106 }
107
108 long folderId = folder.getFolderId();
109
110 if (actionId.equals(ActionKeys.VIEW)) {
111 while (folderId != BookmarksFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
112 folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
113
114 folderId = folder.getParentFolderId();
115
116 if (!permissionChecker.hasOwnerPermission(
117 folder.getCompanyId(), BookmarksFolder.class.getName(),
118 folder.getFolderId(), folder.getUserId(), actionId) &&
119 !permissionChecker.hasPermission(
120 folder.getGroupId(), BookmarksFolder.class.getName(),
121 folder.getFolderId(), actionId)) {
122
123 return false;
124 }
125
126 if (!PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) {
127 break;
128 }
129 }
130
131 return true;
132 }
133 else {
134 while (folderId != BookmarksFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
135 if (permissionChecker.hasOwnerPermission(
136 folder.getCompanyId(), BookmarksFolder.class.getName(),
137 folder.getFolderId(), folder.getUserId(), actionId)) {
138
139 return true;
140 }
141
142 if (permissionChecker.hasPermission(
143 folder.getGroupId(), BookmarksFolder.class.getName(),
144 folder.getFolderId(), actionId)) {
145
146 return true;
147 }
148
149 if (actionId.equals(ActionKeys.VIEW)) {
150 break;
151 }
152
153 folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
154
155 folderId = folder.getParentFolderId();
156 }
157
158 return false;
159 }
160 }
161
162 }