in service/src/main/java/org/apache/fineract/cn/rhythm/service/internal/service/BeatPublisherService.java [92:119]
public Optional<String> requestPermissionForBeats(final String tenantIdentifier, final String applicationIdentifier) {
try (final AutoTenantContext ignored = new AutoTenantContext(tenantIdentifier)) {
try (final AutoUserContext ignored2 = new AutoUserContext(properties.getUser(), "")) {
logger.info("Requesting permission to send beats to application '{}' under tenant '{}'.", applicationIdentifier, tenantIdentifier);
final String consumerPermittableGroupIdentifier = PermittableGroupIds.forApplication(applicationIdentifier);
final Permission publishBeatPermission = new Permission();
publishBeatPermission.setAllowedOperations(Collections.singleton(AllowedOperation.CHANGE));
publishBeatPermission.setPermittableEndpointGroupIdentifier(consumerPermittableGroupIdentifier);
try {
applicationPermissionRequestCreator.createApplicationPermission(rhythmApplicationName.toString(), publishBeatPermission);
logger.debug("Successfully requested permission to send beats to application '{}' under tenant '{}'.", applicationIdentifier, tenantIdentifier);
}
catch (final InvalidTokenException e) {
logger.error("Failed to request permission for application {}, in tenant {} because rhythm does not have permission to access identity.", applicationIdentifier, tenantIdentifier, e);
}
catch (final ApplicationPermissionAlreadyExistsException e) {
logger.debug("Failed to request permission for application {}, in tenant {} because the request already exists. {} was thrown.", applicationIdentifier, tenantIdentifier, e);
}
return Optional.of(consumerPermittableGroupIdentifier);
}
}
catch (final Throwable e) {
logger.warn("Failed to request permission for application {}, in tenant {}.", applicationIdentifier, tenantIdentifier, e);
return Optional.empty();
}
}