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