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.portlet.bookmarks.model.BookmarksFolder;
33 import com.liferay.portlet.bookmarks.model.impl.BookmarksFolderImpl;
34 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
35
36
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 while (folderId != BookmarksFolderImpl.DEFAULT_PARENT_FOLDER_ID) {
111 if (permissionChecker.hasOwnerPermission(
112 folder.getCompanyId(), BookmarksFolder.class.getName(),
113 folderId, folder.getUserId(), actionId)) {
114
115 return true;
116 }
117
118 if (permissionChecker.hasPermission(
119 folder.getGroupId(), BookmarksFolder.class.getName(),
120 folder.getFolderId(), actionId)) {
121
122 return true;
123 }
124
125 if (actionId.equals(ActionKeys.VIEW)) {
126 break;
127 }
128
129 folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
130
131 folderId = folder.getParentFolderId();
132 }
133
134 return false;
135 }
136
137 }