This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch 3_0_X
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/3_0_X by this push:
new 1085d945cf [SYNCOPE-1761] Take into account the base parameter to
compute effective admin realms
1085d945cf is described below
commit 1085d945cf60e15dd3f99ee24ec5a3c4f00db8c9
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Wed May 31 16:38:48 2023 +0200
[SYNCOPE-1761] Take into account the base parameter to compute effective
admin realms
---
.../core/persistence/jpa/dao/JPAAnySearchDAO.java | 8 +++--
ext/elasticsearch/persistence-jpa/pom.xml | 5 +++
.../jpa/dao/ElasticsearchAnySearchDAO.java | 37 ++++++++++++----------
.../jpa/dao/ElasticsearchAnySearchDAOTest.java | 13 ++++----
4 files changed, 36 insertions(+), 27 deletions(-)
diff --git
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
index 6facb6f33f..1d75d8fe94 100644
---
a/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
+++
b/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java
@@ -138,8 +138,10 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
return noRealm;
});
-
realmKeys.addAll(realmDAO.findDescendants(realm.getFullPath(), null, -1,
-1).stream().
-
map(Realm::getKey).collect(Collectors.toSet()));
+ realmKeys.addAll(
+
realmDAO.findDescendants(realm.getFullPath(), null, -1, -1).stream().
+ filter(r ->
r.getFullPath().startsWith(base.getFullPath())).
+
map(Realm::getKey).collect(Collectors.toSet()));
} else {
DynRealm dynRealm = dynRealmDAO.find(realmPath);
if (dynRealm == null) {
@@ -153,7 +155,7 @@ public class JPAAnySearchDAO extends AbstractAnySearchDAO {
realmKeys.clear();
}
} else {
- if (adminRealms.stream().anyMatch(r ->
base.getFullPath().startsWith(r))) {
+ if (adminRealms.stream().anyMatch(r ->
r.startsWith(base.getFullPath()))) {
realmKeys.add(base.getKey());
}
}
diff --git a/ext/elasticsearch/persistence-jpa/pom.xml
b/ext/elasticsearch/persistence-jpa/pom.xml
index 3dad9accfd..ccb4fe18ef 100644
--- a/ext/elasticsearch/persistence-jpa/pom.xml
+++ b/ext/elasticsearch/persistence-jpa/pom.xml
@@ -51,6 +51,11 @@ under the License.
</dependency>
<!-- TEST -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
diff --git
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
index c1ba3cd8b7..1d90017f60 100644
---
a/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
+++
b/ext/elasticsearch/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAO.java
@@ -158,9 +158,12 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
return noRealm;
});
- realmDAO.findDescendants(realm.getFullPath(), null, -1,
-1).forEach(descendant -> queries.add(
+ realmDAO.findDescendants(
+ realm.getFullPath(), null, -1, -1).stream().
+ filter(r ->
r.getFullPath().startsWith(base.getFullPath())).
+ forEach(descendant -> queries.add(
new Query.Builder().term(QueryBuilders.term().
-
field("realm").value(FieldValue.of(descendant.getKey())).build()).
+
field("realm").value(descendant.getKey()).build()).
build()));
} else {
DynRealm dynRealm = dynRealmDAO.find(realmPath);
@@ -169,15 +172,15 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
} else {
dynRealmKeys.add(dynRealm.getKey());
queries.add(new
Query.Builder().term(QueryBuilders.term().
-
field("dynRealm").value(FieldValue.of(dynRealm.getKey())).build()).
+
field("dynRealm").value(dynRealm.getKey()).build()).
build());
}
}
});
} else {
- if (adminRealms.stream().anyMatch(r ->
base.getFullPath().startsWith(r))) {
+ if (adminRealms.stream().anyMatch(r ->
r.startsWith(base.getFullPath()))) {
queries.add(new Query.Builder().term(QueryBuilders.term().
-
field("realm").value(FieldValue.of(base.getKey())).build()).
+ field("realm").value(base.getKey()).build()).
build());
}
}
@@ -205,7 +208,7 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
query = new Query.Builder().bool(
QueryBuilders.bool().
must(new
Query.Builder().term(QueryBuilders.term().
-
field("realm").value(FieldValue.of(base.getKey())).build()).
+
field("realm").value(base.getKey()).build()).
build()).
must(query).build()).
build();
@@ -460,13 +463,13 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
protected Query getQuery(final AnyTypeCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("anyType").value(FieldValue.of(cond.getAnyTypeKey())).build()).
+ field("anyType").value(cond.getAnyTypeKey()).build()).
build();
}
protected Query getQuery(final RelationshipTypeCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("relationshipTypes").value(FieldValue.of(cond.getRelationshipTypeKey())).build()).
+
field("relationshipTypes").value(cond.getRelationshipTypeKey()).build()).
build();
}
@@ -474,7 +477,7 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
String rightAnyObjectKey = check(cond);
return new Query.Builder().term(QueryBuilders.term().
-
field("relationships").value(FieldValue.of(rightAnyObjectKey)).build()).
+ field("relationships").value(rightAnyObjectKey).build()).
build();
}
@@ -483,7 +486,7 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
List<Query> membershipQueries = groupKeys.stream().
map(key -> new Query.Builder().term(QueryBuilders.term().
- field("memberships").value(FieldValue.of(key)).build()).
+ field("memberships").value(key).build()).
build()).collect(Collectors.toList());
if (membershipQueries.size() == 1) {
return membershipQueries.get(0);
@@ -494,19 +497,19 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
protected Query getQuery(final RoleCond cond) {
return new Query.Builder().term(QueryBuilders.term().
- field("roles").value(FieldValue.of(cond.getRole())).build()).
+ field("roles").value(cond.getRole()).build()).
build();
}
protected Query getQuery(final PrivilegeCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("privileges").value(FieldValue.of(cond.getPrivilege())).build()).
+ field("privileges").value(cond.getPrivilege()).build()).
build();
}
protected Query getQuery(final DynRealmCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("dynRealms").value(FieldValue.of(cond.getDynRealm())).build()).
+ field("dynRealms").value(cond.getDynRealm()).build()).
build();
}
@@ -514,19 +517,19 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
String memberKey = check(cond);
return new Query.Builder().term(QueryBuilders.term().
- field("members").value(FieldValue.of(memberKey)).build()).
+ field("members").value(memberKey).build()).
build();
}
protected Query getQuery(final AuxClassCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("auxClasses").value(FieldValue.of(cond.getAuxClass())).build()).
+ field("auxClasses").value(cond.getAuxClass()).build()).
build();
}
protected Query getQuery(final ResourceCond cond) {
return new Query.Builder().term(QueryBuilders.term().
-
field("resources").value(FieldValue.of(cond.getResource())).build()).
+ field("resources").value(cond.getResource()).build()).
build();
}
@@ -577,7 +580,7 @@ public class ElasticsearchAnySearchDAO extends
AbstractAnySearchDAO {
case IEQ:
query = new Query.Builder().match(QueryBuilders.match().
-
field(schema.getKey()).query(FieldValue.of(cond.getExpression().toLowerCase())).build()).
+
field(schema.getKey()).query(cond.getExpression().toLowerCase()).build()).
build();
break;
diff --git
a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
index f17e8c5e48..02619dc813 100644
---
a/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
+++
b/ext/elasticsearch/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/dao/ElasticsearchAnySearchDAOTest.java
@@ -27,7 +27,6 @@ import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch._types.SearchType;
import co.elastic.clients.elasticsearch._types.query_dsl.BoolQuery;
import co.elastic.clients.elasticsearch._types.query_dsl.DisMaxQuery;
@@ -122,12 +121,12 @@ public class ElasticsearchAnySearchDAOTest {
// 2. test
Set<String> adminRealms = Set.of(SyncopeConstants.ROOT_REALM);
Triple<Optional<Query>, Set<String>, Set<String>> filter =
- searchDAO.getAdminRealmsFilter(realmDAO.getRoot(), true,
adminRealms, AnyTypeKind.USER);
+ searchDAO.getAdminRealmsFilter(root, true, adminRealms,
AnyTypeKind.USER);
assertThat(
new Query.Builder().disMax(QueryBuilders.disMax().queries(
new
Query.Builder().term(QueryBuilders.term().field("realm").value(
-
FieldValue.of("rootKey")).build()).build()).build()).
+ "rootKey").build()).build()).build()).
build()).
usingRecursiveComparison().isEqualTo(filter.getLeft().get());
assertEquals(Set.of(), filter.getMiddle());
@@ -196,10 +195,10 @@ public class ElasticsearchAnySearchDAOTest {
assertThat(
new Query.Builder().bool(QueryBuilders.bool().
must(new
Query.Builder().exists(QueryBuilders.exists().field("id").build()).build()).
- must(new
Query.Builder().term(QueryBuilders.term().field("memberships").value(
-
FieldValue.of("groupKey")).build()).build()).
- build()).build()).
- usingRecursiveComparison().isEqualTo(request.query());
+ must(new
Query.Builder().term(QueryBuilders.term().field("memberships").value("groupKey").
+ build()).build()).build()).build()).
+ usingRecursiveComparison().
+ isEqualTo(request.query());
}
}