예제 #1
0
  @RequestMapping(value = "/ids/Users")
  @ResponseBody
  public SearchResults<?> findUsers(
      @RequestParam(required = true, defaultValue = "") String filter,
      @RequestParam(required = false, defaultValue = "ascending") String sortOrder,
      @RequestParam(required = false, defaultValue = "1") int startIndex,
      @RequestParam(required = false, defaultValue = "100") int count,
      @RequestParam(required = false, defaultValue = "false") boolean includeInactive) {
    if (!enabled) {
      logger.warn(
          "Request from user "
              + securityContextAccessor.getAuthenticationInfo()
              + " received at disabled Id translation endpoint with filter:"
              + filter);
      throw new ScimException("Illegal operation.", HttpStatus.BAD_REQUEST);
    }

    filter = filter.trim();
    checkFilter(filter);

    List<IdentityProvider> activeIdentityProviders =
        provisioning.retrieveActive(IdentityZoneHolder.get().getId());

    if (!includeInactive) {
      if (activeIdentityProviders.isEmpty()) {
        return new SearchResults<>(
            Arrays.asList(ScimCore.SCHEMAS), new ArrayList<>(), startIndex, count, 0);
      }
      String originFilter =
          activeIdentityProviders
              .stream()
              .map(
                  identityProvider ->
                      "".concat("origin eq \"" + identityProvider.getOriginKey() + "\""))
              .collect(Collectors.joining(" OR "));
      filter += " AND (" + originFilter + " )";
    }

    return scimUserEndpoints.findUsers(
        "id,userName,origin", filter, "userName", sortOrder, startIndex, count);
  }
예제 #2
0
 @ExceptionHandler
 public View handleException(Exception t, HttpServletRequest request) throws ScimException {
   return scimUserEndpoints.handleException(t, request);
 }