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 public long getCompanyScopeActionIds(
041 long companyId, String name, long roleId)
042 throws SystemException {
043
044 return getGroupScopeActionIds(companyId, 0, name, roleId);
045 }
046
047 public long getGroupScopeActionIds(
048 long companyId, long groupId, String name, long roleId)
049 throws SystemException {
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 public List<ResourceTypePermission> getGroupScopeResourceTypePermissions(
064 long companyId, String name, long roleId)
065 throws SystemException {
066
067 return resourceTypePermissionFinder.findByGroupScopeC_N_R(
068 companyId, name, roleId);
069 }
070
071 public ResourceBlockPermissionsContainer
072 getResourceBlockPermissionsContainer(
073 long companyId, long groupId, String name)
074 throws SystemException {
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 public List<ResourceTypePermission> getRoleResourceTypePermissions(
095 long roleId)
096 throws SystemException {
097
098 return resourceTypePermissionPersistence.findByRoleId(roleId);
099 }
100
101 public boolean hasCompanyScopePermission(
102 long companyId, String name, long roleId, String actionId)
103 throws PortalException, SystemException {
104
105 return hasGroupScopePermission(companyId, 0, name, roleId, actionId);
106 }
107
108 public boolean hasEitherScopePermission(
109 long companyId, String name, long roleId, String actionId)
110 throws PortalException, SystemException {
111
112 ResourceAction resourceAction =
113 resourceActionLocalService.getResourceAction(name, actionId);
114
115 List<ResourceTypePermission> resourceTypePermissions =
116 resourceTypePermissionPersistence.findByC_N_R(
117 companyId, name, roleId);
118
119 for (ResourceTypePermission resourceTypePermission :
120 resourceTypePermissions) {
121
122 long actionIdsLong = resourceTypePermission.getActionIds();
123 long bitwiseValue = resourceAction.getBitwiseValue();
124
125 if ((actionIdsLong & bitwiseValue) == bitwiseValue) {
126 return true;
127 }
128 }
129
130 return false;
131 }
132
133 public boolean hasGroupScopePermission(
134 long companyId, long groupId, String name, long roleId,
135 String actionId)
136 throws PortalException, SystemException {
137
138 ResourceAction resourceAction =
139 resourceActionLocalService.getResourceAction(name, actionId);
140
141 ResourceTypePermission resourceTypePermission =
142 resourceTypePermissionPersistence.findByC_G_N_R(
143 companyId, groupId, name, roleId);
144
145 long actionIdsLong = resourceTypePermission.getActionIds();
146 long bitwiseValue = resourceAction.getBitwiseValue();
147
148 if ((actionIdsLong & bitwiseValue) == bitwiseValue) {
149 return true;
150 }
151 else {
152 return false;
153 }
154 }
155
156 public void updateCompanyScopeResourceTypePermissions(
157 long companyId, String name, long roleId, long actionIdsLong,
158 long operator)
159 throws SystemException {
160
161 updateGroupScopeResourceTypePermissions(
162 companyId, 0, name, roleId, actionIdsLong, operator);
163 }
164
165 public void updateGroupScopeResourceTypePermissions(
166 long companyId, long groupId, String name, long roleId,
167 long actionIdsLong, long operator)
168 throws SystemException {
169
170 ResourceTypePermission resourceTypePermission =
171 resourceTypePermissionPersistence.fetchByC_G_N_R(
172 companyId, groupId, name, roleId);
173
174 if (resourceTypePermission == null) {
175 if (actionIdsLong == 0) {
176 return;
177 }
178
179 long resourceTypePermissionId = counterLocalService.increment();
180
181 resourceTypePermission = resourceTypePermissionPersistence.create(
182 resourceTypePermissionId);
183
184 resourceTypePermission.setCompanyId(companyId);
185 resourceTypePermission.setGroupId(groupId);
186 resourceTypePermission.setName(name);
187 resourceTypePermission.setRoleId(roleId);
188 }
189
190 if (operator == ResourceBlockConstants.OPERATOR_ADD) {
191 actionIdsLong |= resourceTypePermission.getActionIds();
192 }
193 else if (operator == ResourceBlockConstants.OPERATOR_REMOVE) {
194 actionIdsLong =
195 resourceTypePermission.getActionIds() & (~actionIdsLong);
196 }
197
198 if (actionIdsLong == 0) {
199 deleteResourceTypePermission(resourceTypePermission);
200 }
201 else {
202 resourceTypePermission.setActionIds(actionIdsLong);
203
204 updateResourceTypePermission(resourceTypePermission);
205 }
206 }
207
208 }