in service/src/main/java/org/apache/fineract/cn/identity/internal/command/handler/AuthenticationCommandHandler.java [429:455]
private Set<TokenPermission> getApplicationCallEndpointSetTokenPermissions(
final String userIdentifier,
final RoleEntity userRole,
final ApplicationCallEndpointSetEntity applicationCallEndpointSet,
final String sourceApplicationName) {
final List<PermissionType> permissionsForUser = userRole.getPermissions();
final Set<PermissionType> permissionsRequestedByApplication = applicationCallEndpointSet.getCallEndpointGroupIdentifiers().stream()
.map(x -> applicationPermissions.getPermissionForApplication(sourceApplicationName, x))
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toSet());
final Stream<PermissionType> applicationRequestedPermissionsTheUserHas
= intersectPermissionList(permissionsForUser, permissionsRequestedByApplication.stream());
final Set<PermissionType> permissionsPossible = applicationRequestedPermissionsTheUserHas
.filter(x ->
applicationPermissionUsers.enabled(sourceApplicationName, x.getPermittableGroupIdentifier(), userIdentifier))
.collect(Collectors.toSet());
if (!permissionsPossible.containsAll(permissionsRequestedByApplication))
throw AmitAuthenticationException.applicationMissingPermissions(userIdentifier, sourceApplicationName);
return permissionsPossible.stream()
.flatMap(this::mapPermissions)
.collect(Collectors.toSet());
}