Filters allow for more specific tuning of access to entitlements.
Let's assume that we have an entitlement, everybody.txt. This entitlement is automatically updated to include every person in the company. We reference this entitlement in places like our messaging software and email lists.
In the event that we wanted a version of everybody.txt which was Employees-only, we could add a filter for contractors.
With a contractor filter defined, all contractors will be filtered from entitlements by default. Contractors are only added to an entitlement if there is a corresponding contractors = <handle> or contractors = all in the same file.
Lets assume we have bob who is an employee and jane who is a contractor.
username = bob
username = jane
Only bob will have access here, since there is not an additional filter declaration.
username = bob
username = jane
contractors = jane
Both bob and jane will have access here, since a contractor filter allowing jane is defined.
username = bob
username = jane
contractors = all
Both bob and jane will have access here, since a contractor filter allowing all is defined.
Filters can also be used for groups, like:
group = pizza_teams/contractor_group
contractors = pizza_teams/contractor_group
Everyone inside of pizza_teams/contractor_group will be granted access, including contractors.
This is the group which you are comparing membership against. For the Entitlements::Data::Groups::Calculated::Filters::MemberOfGroup class, if the employee is a member of this group then they will automatically be filtered from the entitlement.
excluded_paths takes a list of paths which are automatically granted filter = all and are excluded from the filter process.
included_paths takes a list of paths which are automatically granted filter = none and are included in the filter process.
excluded_paths and included_paths can be used together for advanced configuration. In the event that there is a folder which you want to exclude all but one (or a few) subfolders for a filter, you can set both excluded_paths and included_paths like so:
my-filter:
class: Entitlements::Data::Groups::Calculated::Filters::MemberOfGroup
config:
group: internal/my/group
excluded_paths:
- everything/
included_paths:
- everything/this_one_folder
- everything/this_other_folderincluded_paths takes precedence over excluded_paths, so every folder under everything/ would be excluded except everything/this_one_folder and everything/this_other_folder.