in data-resource-management-service/drms-rdbms-impl/drms-server/src/main/java/org/apache/airavata/drms/api/handlers/SharingServiceHandler.java [85:137]
public void shareEntityWithGroup(ShareEntityWithGroupRequest request, StreamObserver<Empty> responseObserver) {
try {
AuthenticatedUser authenticatedUser = request.getAuthToken().getAuthenticatedUser();
String username = authenticatedUser.getUsername();
String tenantId = authenticatedUser.getTenantId();
try (SharingManagementClient sharingManagementClient = custosClientProvider.getSharingManagementClient()) {
Entity entity = Entity.newBuilder().setId(request.getEntityId()).build();
PermissionType permissionTypeEditor = PermissionType.newBuilder().setId(request.getPermissionId()).build();
PermissionType permissionTypeAdmin = PermissionType.newBuilder().setId("ADMIN").build();
SharingRequest sharingRequestEditor = SharingRequest
.newBuilder()
.setClientId(tenantId)
.setEntity(entity)
.setPermissionType(permissionTypeEditor)
.addOwnerId(username).build();
org.apache.custos.sharing.service.Status status = sharingManagementClient
.userHasAccess(tenantId, sharingRequestEditor);
SharingRequest sharingRequestAdmin = SharingRequest
.newBuilder()
.setClientId(tenantId)
.setEntity(entity)
.setPermissionType(permissionTypeAdmin)
.addOwnerId(username).build();
org.apache.custos.sharing.service.Status statusAdmin = sharingManagementClient
.userHasAccess(tenantId, sharingRequestAdmin);
if (status.getStatus() || statusAdmin.getStatus()) {
SharingRequest shrRequest = SharingRequest
.newBuilder()
.setClientId(tenantId)
.setEntity(entity)
.setCascade(true)
.setPermissionType(PermissionType.newBuilder().setId(request.getPermissionId()).build())
.addOwnerId(request.getSharedGroupId()).build();
sharingManagementClient.shareEntityWithGroups(tenantId, shrRequest);
responseObserver.onNext(Empty.newBuilder().build());
responseObserver.onCompleted();
} else {
String msg = "You don't have permission to manage sharing";
LOGGER.error(msg);
responseObserver.onError(Status.PERMISSION_DENIED.withDescription(msg).asRuntimeException());
}
}
} catch (Exception ex) {
LOGGER.error("Error occurred while sharing entity with group {}", request.getSharedGroupId());
String msg = "Error occurred while sharing entity with group {}" + request.getSharedGroupId();
responseObserver.onError(Status.INTERNAL.withDescription(msg).asRuntimeException());
}
}