This is an automated email from the ASF dual-hosted git repository.
isjarana pushed a commit to branch production
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
The following commit(s) were added to refs/heads/production by this push:
new fd37062cf sharing service fix permission revoke issue
new 468d89d53 Merge pull request #334 from isururanawaka/production_new
fd37062cf is described below
commit fd37062cfac27bca2443c73d560549739ac0d81d
Author: Isuru Ranawaka <[email protected]>
AuthorDate: Mon Dec 19 21:26:49 2022 -0500
sharing service fix permission revoke issue
---
.../custos/sharing/service/SharingService.java | 50 +++++++++++++++++++---
1 file changed, 44 insertions(+), 6 deletions(-)
diff --git
a/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
b/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
index d67e85f9c..449dafef1 100644
---
a/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
+++
b/custos-core-services/sharing-core-service/src/main/java/org/apache/custos/sharing/service/SharingService.java
@@ -1616,6 +1616,11 @@ public class SharingService extends
org.apache.custos.sharing.service.SharingSer
return;
}
+ List<String> checkTypes = new ArrayList<>();
+ checkTypes.add(Constants.INDIRECT_CASCADING);
+ checkTypes.add(Constants.DIRECT_CASCADING);
+ checkTypes.add(Constants.DIRECT_NON_CASCADING);
+
for (String userId : usersList) {
@@ -1633,13 +1638,24 @@ public class SharingService extends
org.apache.custos.sharing.service.SharingSer
tenantId,
Constants.INDIRECT_CASCADING,
userId);
- }
+ List<Sharing> exSharings =
sharingRepository.findSharingForEntityOfTenant(tenantId, internalEntityId,
checkTypes);
+ if (!exSharings.isEmpty()) {
+ sharingRepository.
+
deleteAllByEntityIdAndPermissionTypeIdAndAssociatingIdAndTenantIdAndInheritedParentId(
+ internalEntityId,
+ internalPermissionType,
+ userId,
+ tenantId,
+
exSharings.get(0).getInheritedParent().getId());
+ revokeCascadingPermissionForChildEntities(internalEntityId,
+ internalPermissionType,
+ userId,
+ tenantId,
+ exSharings.get(0).getInheritedParent().getId());
+ }
- List<String> checkTypes = new ArrayList<>();
- checkTypes.add(Constants.INDIRECT_CASCADING);
- checkTypes.add(Constants.DIRECT_CASCADING);
- checkTypes.add(Constants.DIRECT_NON_CASCADING);
+ }
List<Sharing> newSharings =
sharingRepository.findAllByEntityAndSharingType(tenantId,
internalEntityId, checkTypes);
@@ -1649,7 +1665,6 @@ public class SharingService extends
org.apache.custos.sharing.service.SharingSer
entityRepository.save(entity);
}
-
org.apache.custos.sharing.service.Status status =
org.apache.custos.sharing.service.Status
.newBuilder()
.setStatus(true)
@@ -1659,4 +1674,27 @@ public class SharingService extends
org.apache.custos.sharing.service.SharingSer
}
+ private boolean revokeCascadingPermissionForChildEntities
+ (String entityId, String internalPermissionType, String userId,
long tenantId, String inheritedParentId) {
+ List<String> newSharingTypes = new ArrayList<>();
+ newSharingTypes.add(Constants.INDIRECT_CASCADING);
+
+ List<org.apache.custos.sharing.persistance.model.Entity> entityList =
entityRepository
+ .findAllByExternalParentIdAndTenantId(entityId, tenantId);
+
+ entityList.forEach(entity -> {
+ sharingRepository.
+
deleteAllByEntityIdAndPermissionTypeIdAndAssociatingIdAndTenantIdAndInheritedParentId(
+ entity.getId(),
+ internalPermissionType,
+ userId,
+ tenantId,
+ inheritedParentId);
+
+ revokeCascadingPermissionForChildEntities(entity.getId(),
+ internalPermissionType, userId, tenantId,
inheritedParentId);
+ });
+
+ return true;
+ }
}