private Set getApplicationCallEndpointSetTokenPermissions()

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());
  }