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