@Override public FilterFieldExpression filterByAcl() {return delegate.filterByAcl();}
private Criteria aclFilterCriteria(final List<String> authorisationSubjectIds) { ConditionChecker.checkNotNull(authorisationSubjectIds); return criteriaFactory.fieldCriteria(fieldExpressionFactory.filterByAcl(), criteriaFactory.in(authorisationSubjectIds)); }
authorizationSubjectsPredicate, FIELD_EXPRESSION_FACTORY.filterByGlobalRead()); final Criteria aclFieldCriteria = createCriteria(isSudo, CRITERIA_FACTORY, authorizationSubjectsPredicate, FIELD_EXPRESSION_FACTORY.filterByAcl()); final List<Bson> pipeline = new ArrayList<>();
authorizationSubjectsPredicate, FIELD_EXPRESSION_FACTORY.filterByGlobalRead()); final Criteria aclFieldCriteria = createCriteria(isSudo, CRITERIA_FACTORY, authorizationSubjectsPredicate, FIELD_EXPRESSION_FACTORY.filterByAcl()); final List<Bson> pipeline = new ArrayList<>();
private Criteria parseCriteriaWithAuthorization(final ThingSearchQueryCommand<?> command) { final Criteria criteria; final DittoHeaders dittoHeaders = command.getDittoHeaders(); final Set<String> namespaces = command.getNamespaces().orElse(null); final String filter = command.getFilter().orElse(null); final List<String> subjectIds = dittoHeaders.getAuthorizationContext().getAuthorizationSubjectIds(); if (V_1 == command.getImplementedSchemaVersion()) { if (namespaces == null) { criteria = queryFilterCriteriaFactory.filterCriteriaRestrictedByAcl(filter, dittoHeaders, subjectIds); } else { criteria = queryFilterCriteriaFactory.filterCriteriaRestrictedByAclAndNamespaces( filter, dittoHeaders, subjectIds, namespaces); } } else { final CriteriaFactory cf = queryFilterCriteriaFactory.getCriteriaFactory(); final Predicate subjectPredicate = cf.in(subjectIds); final Criteria globalReadsCriteria = cf.fieldCriteria(fieldExpressionFactory.filterByGlobalRead(), subjectPredicate); final Criteria aclCriteria = cf.fieldCriteria(fieldExpressionFactory.filterByAcl(), subjectPredicate); final Criteria authorizationCriteria = cf.or(Arrays.asList(globalReadsCriteria, aclCriteria)); final Criteria filterCriteria = namespaces == null ? queryFilterCriteriaFactory.filterCriteria(filter, dittoHeaders) : queryFilterCriteriaFactory.filterCriteriaRestrictedByNamespaces(filter, dittoHeaders, namespaces); criteria = cf.and(Arrays.asList(authorizationCriteria, filterCriteria)); } return criteria; }
private Criteria parseCriteriaWithAuthorization(final ThingSearchQueryCommand<?> command) { final Criteria criteria; final DittoHeaders dittoHeaders = command.getDittoHeaders(); final Set<String> namespaces = command.getNamespaces().orElse(null); final String filter = command.getFilter().orElse(null); final List<String> subjectIds = dittoHeaders.getAuthorizationContext().getAuthorizationSubjectIds(); if (V_1 == command.getImplementedSchemaVersion()) { if (namespaces == null) { criteria = queryFilterCriteriaFactory.filterCriteriaRestrictedByAcl(filter, dittoHeaders, subjectIds); } else { criteria = queryFilterCriteriaFactory.filterCriteriaRestrictedByAclAndNamespaces( filter, dittoHeaders, subjectIds, namespaces); } } else { final CriteriaFactory cf = queryFilterCriteriaFactory.getCriteriaFactory(); final Predicate subjectPredicate = cf.in(subjectIds); final Criteria globalReadsCriteria = cf.fieldCriteria(fieldExpressionFactory.filterByGlobalRead(), subjectPredicate); final Criteria aclCriteria = cf.fieldCriteria(fieldExpressionFactory.filterByAcl(), subjectPredicate); final Criteria authorizationCriteria = cf.or(Arrays.asList(globalReadsCriteria, aclCriteria)); final Criteria filterCriteria = namespaces == null ? queryFilterCriteriaFactory.filterCriteria(filter, dittoHeaders) : queryFilterCriteriaFactory.filterCriteriaRestrictedByNamespaces(filter, dittoHeaders, namespaces); criteria = cf.and(Arrays.asList(authorizationCriteria, filterCriteria)); } return criteria; }