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