001
014
015 package com.liferay.portal.service.impl;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.model.ResourceAction;
020 import com.liferay.portal.model.ResourceBlockConstants;
021 import com.liferay.portal.model.ResourceBlockPermissionsContainer;
022 import com.liferay.portal.model.ResourceTypePermission;
023 import com.liferay.portal.service.base.ResourceTypePermissionLocalServiceBaseImpl;
024
025 import java.util.List;
026
027
038 public class ResourceTypePermissionLocalServiceImpl
039 extends ResourceTypePermissionLocalServiceBaseImpl {
040
041 @Override
042 public long getCompanyScopeActionIds(
043 long companyId, String name, long roleId)
044 throws SystemException {
045
046 return getGroupScopeActionIds(companyId, 0, name, roleId);
047 }
048
049 @Override
050 public long getGroupScopeActionIds(
051 long companyId, long groupId, String name, long roleId)
052 throws SystemException {
053
054 ResourceTypePermission resourceTypePermission =
055 resourceTypePermissionPersistence.fetchByC_G_N_R(
056 companyId, groupId, name, roleId);
057
058 if (resourceTypePermission == null) {
059 return 0;
060 }
061 else {
062 return resourceTypePermission.getActionIds();
063 }
064 }
065
066 @Override
067 public List<ResourceTypePermission> getGroupScopeResourceTypePermissions(
068 long companyId, String name, long roleId)
069 throws SystemException {
070
071 return resourceTypePermissionFinder.findByGroupScopeC_N_R(
072 companyId, name, roleId);
073 }
074
075 @Override
076 public ResourceBlockPermissionsContainer
077 getResourceBlockPermissionsContainer(
078 long companyId, long groupId, String name)
079 throws SystemException {
080
081 List<ResourceTypePermission> resourceTypePermissions =
082 resourceTypePermissionFinder.findByEitherScopeC_G_N(
083 companyId, groupId, name);
084
085 ResourceBlockPermissionsContainer resourceBlockPermissionContainer =
086 new ResourceBlockPermissionsContainer();
087
088 for (ResourceTypePermission resourceTypePermission :
089 resourceTypePermissions) {
090
091 resourceBlockPermissionContainer.setPermissions(
092 resourceTypePermission.getRoleId(),
093 resourceTypePermission.getActionIds());
094 }
095
096 return resourceBlockPermissionContainer;
097 }
098
099 @Override
100 public List<ResourceTypePermission> getRoleResourceTypePermissions(
101 long roleId)
102 throws SystemException {
103
104 return resourceTypePermissionPersistence.findByRoleId(roleId);
105 }
106
107 @Override
108 public boolean hasCompanyScopePermission(
109 long companyId, String name, long roleId, String actionId)
110 throws PortalException, SystemException {
111
112 return hasGroupScopePermission(companyId, 0, name, roleId, actionId);
113 }
114
115 @Override
116 public boolean hasEitherScopePermission(
117 long companyId, String name, long roleId, String actionId)
118 throws PortalException, SystemException {
119
120 ResourceAction resourceAction =
121 resourceActionLocalService.getResourceAction(name, actionId);
122
123 List<ResourceTypePermission> resourceTypePermissions =
124 resourceTypePermissionPersistence.findByC_N_R(
125 companyId, name, roleId);
126
127 for (ResourceTypePermission resourceTypePermission :
128 resourceTypePermissions) {
129
130 long actionIdsLong = resourceTypePermission.getActionIds();
131 long bitwiseValue = resourceAction.getBitwiseValue();
132
133 if ((actionIdsLong & bitwiseValue) == bitwiseValue) {
134 return true;
135 }
136 }
137
138 return false;
139 }
140
141 @Override
142 public boolean hasGroupScopePermission(
143 long companyId, long groupId, String name, long roleId,
144 String actionId)
145 throws PortalException, SystemException {
146
147 ResourceAction resourceAction =
148 resourceActionLocalService.getResourceAction(name, actionId);
149
150 ResourceTypePermission resourceTypePermission =
151 resourceTypePermissionPersistence.findByC_G_N_R(
152 companyId, groupId, name, roleId);
153
154 long actionIdsLong = resourceTypePermission.getActionIds();
155 long bitwiseValue = resourceAction.getBitwiseValue();
156
157 if ((actionIdsLong & bitwiseValue) == bitwiseValue) {
158 return true;
159 }
160 else {
161 return false;
162 }
163 }
164
165 @Override
166 public void updateCompanyScopeResourceTypePermissions(
167 long companyId, String name, long roleId, long actionIdsLong,
168 long operator)
169 throws SystemException {
170
171 updateGroupScopeResourceTypePermissions(
172 companyId, 0, name, roleId, actionIdsLong, operator);
173 }
174
175 @Override
176 public void updateGroupScopeResourceTypePermissions(
177 long companyId, long groupId, String name, long roleId,
178 long actionIdsLong, long operator)
179 throws SystemException {
180
181 ResourceTypePermission resourceTypePermission =
182 resourceTypePermissionPersistence.fetchByC_G_N_R(
183 companyId, groupId, name, roleId);
184
185 if (resourceTypePermission == null) {
186 if (actionIdsLong == 0) {
187 return;
188 }
189
190 long resourceTypePermissionId = counterLocalService.increment();
191
192 resourceTypePermission = resourceTypePermissionPersistence.create(
193 resourceTypePermissionId);
194
195 resourceTypePermission.setCompanyId(companyId);
196 resourceTypePermission.setGroupId(groupId);
197 resourceTypePermission.setName(name);
198 resourceTypePermission.setRoleId(roleId);
199 }
200
201 if (operator == ResourceBlockConstants.OPERATOR_ADD) {
202 actionIdsLong |= resourceTypePermission.getActionIds();
203 }
204 else if (operator == ResourceBlockConstants.OPERATOR_REMOVE) {
205 actionIdsLong =
206 resourceTypePermission.getActionIds() & (~actionIdsLong);
207 }
208
209 if (actionIdsLong == 0) {
210 deleteResourceTypePermission(resourceTypePermission);
211 }
212 else {
213 resourceTypePermission.setActionIds(actionIdsLong);
214
215 updateResourceTypePermission(resourceTypePermission);
216 }
217 }
218
219 }