Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/typo3-solr/solr-typo3-plugin

An Apache Solr filter plugin to support TYPO3 access restrictions.
https://github.com/typo3-solr/solr-typo3-plugin

cms filter java search solr typo3

Last synced: 3 months ago
JSON representation

An Apache Solr filter plugin to support TYPO3 access restrictions.

Awesome Lists containing this project

README

        

![GitHub Build Status](https://github.com/TYPO3-Solr/solr-typo3-plugin/actions/workflows/ci.yml/badge.svg)

# Solr TYPO3 Plugin

The Solr TYPO3 plugin provides the AccessFilterQParserPlugin, which is a
org.apache.solr.search.QParserPlugin that allows to restrict access to Solr
documents indexed by TYPO3 on a document level.

It filters the documents returned from a query by performing set operations
between a particular string field in the index and the specified value. These
values are comma separated lists of user group IDs, the index field stores the
groups that are allowed to access a particular document while the groups the
user is a member of / has access to are specified through a filter parameter.

## Example

```
http://localhost:8983/path/to/solr/select/?fq={!typo3access field=fieldname}permittedUserGroups&q=...
http://localhost:8983/solr/collection1/select/?q=title:Hello&fq={!typo3access}0,1,4,10
```

* The **field** parameter is optional and defaults to "access", it is the name of the string field holding the access restrictions for a document
* **permittedUserGroups** is a comma separated list of groups the user is granted access to

## Adding the plugin to Solr

To use this plugin, simply copy the jar file containing the plugin classes into your
$SOLR_HOME/lib directory and then add the following to your solrconfig.xml file:

```xml

```

In your schema.xml add a field like this:

```xml

```

It is important to turn on DocValues. The field does not need to be stored,
but it helps with debugging.

Finally, restart your servlet container.