fix #1154 add virtual_host to search condition
This commit is contained in:
parent
7b7d031910
commit
a6ed94d64d
2 changed files with 30 additions and 2 deletions
|
@ -291,6 +291,7 @@ public class QueryHelper {
|
|||
buildBaseQuery(queryContext, context);
|
||||
buildBoostQuery(queryContext);
|
||||
buildRoleQuery(queryContext, searchRequestType);
|
||||
buildVirtualHostQuery(queryContext, searchRequestType);
|
||||
|
||||
if (!queryContext.hasSorts() && defaultSortBuilders != null) {
|
||||
queryContext.addSorts(defaultSortBuilders);
|
||||
|
@ -298,6 +299,22 @@ public class QueryHelper {
|
|||
return queryContext;
|
||||
}
|
||||
|
||||
protected void buildVirtualHostQuery(final QueryContext queryContext, final SearchRequestType searchRequestType) {
|
||||
switch (searchRequestType) {
|
||||
case ADMIN_SEARCH:
|
||||
// nothing to do
|
||||
break;
|
||||
default:
|
||||
final String key = fessConfig.getVirtualHostKey();
|
||||
if (StringUtil.isNotBlank(key)) {
|
||||
queryContext.addQuery(boolQuery -> {
|
||||
boolQuery.filter(QueryBuilders.termQuery(fessConfig.getIndexFieldVirtualHost(), key));
|
||||
});
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void buildRoleQuery(final QueryContext queryContext, final SearchRequestType searchRequestType) {
|
||||
if (roleQueryHelper != null && queryContext.roleQueryEnabled()) {
|
||||
final Set<String> roleSet = roleQueryHelper.build(searchRequestType);
|
||||
|
|
|
@ -15,9 +15,13 @@
|
|||
*/
|
||||
package org.codelibs.fess.helper;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.apache.lucene.analysis.core.WhitespaceAnalyzer;
|
||||
import org.apache.lucene.queryparser.classic.QueryParser;
|
||||
import org.apache.lucene.queryparser.ext.ExtendableQueryParser;
|
||||
import org.codelibs.core.io.FileUtil;
|
||||
import org.codelibs.core.misc.DynamicProperties;
|
||||
import org.codelibs.fess.Constants;
|
||||
import org.codelibs.fess.entity.SearchRequestParams.SearchRequestType;
|
||||
import org.codelibs.fess.mylasta.direction.FessConfig;
|
||||
|
@ -27,6 +31,7 @@ import org.elasticsearch.index.query.BoolQueryBuilder;
|
|||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.functionscore.ScoreFunctionBuilders;
|
||||
import org.lastaflute.di.core.factory.SingletonLaContainerFactory;
|
||||
|
||||
public class QueryHelperTest extends UnitFessTestCase {
|
||||
|
||||
|
@ -43,10 +48,16 @@ public class QueryHelperTest extends UnitFessTestCase {
|
|||
queryParser.setDefaultOperator(QueryParser.Operator.AND);
|
||||
return queryParser;
|
||||
}
|
||||
|
||||
};
|
||||
File file = File.createTempFile("test", ".properties");
|
||||
file.deleteOnExit();
|
||||
FileUtil.writeBytes(file.getAbsolutePath(), "ldap.security.principal=%s@fess.codelibs.local".getBytes("UTF-8"));
|
||||
DynamicProperties systemProps = new DynamicProperties(file);
|
||||
SingletonLaContainerFactory.getContainer().register(systemProps, "systemProperties");
|
||||
final FessConfig fessConfig = ComponentUtil.getFessConfig();
|
||||
registerMockInstance(fessConfig);
|
||||
registerMockInstance(new SystemHelper());
|
||||
registerMock(fessConfig);
|
||||
registerMock(new SystemHelper());
|
||||
inject(queryHelper);
|
||||
queryHelper.init();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue