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