@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); }
@ExceptionHandler public View handleException(Exception t, HttpServletRequest request) throws ScimException { return scimUserEndpoints.handleException(t, request); }