The Islandora XACML Editor provides a graphical user interface to edit XACML policies for objects in a repository or collection. It adds a new tab to each collection called Child Policy and a tab to each item called Item Policy, where permissions can be set on a per User or per Role basis for:
- Object Management: Controls who can set XACML policies for an object/collection.
- Object Viewing: Controls who can view an object/collection.
- Datastreams and MIME types: Controls who can view datastreams by DSID and MIME type.
This module requires the following modules/libraries:
Install as usual, see this for further information.
It may be desirable--and in fact necessary for some modules--to disable/remove one of the default XACML policies which denies any interactions with the POLICY datastream to users without the "administrator" role.
This policy is located here:
Solr Searching Hook
In order to comply with XACML restrictions placed on objects, a hook is used to filter results that do not conform to a searching user's roles and name. This hook will not function correctly if the Solr fields for
ViewableByRole are not defined correctly as they are set in the XSLT. These values can be set through the admin page for the module.
Apply XACML policy to target object
To add policy.xml to object islandora:57:
drush -v --user=1 islandora_xacml_editor_apply_policy --policy=/tmp/policy.xml --pid=islandora:57
To apply this policy to islandora:57 and all child objects, add the
Force XACML inheritance to child objects
To apply the XACML policy from islandora:root to its children:
drush -v --user=1 islandora_xacml_editor_force_policy_inheritance --pid=islandora:root
To apply this policy only to immediate children, use the
--shallow_traversal option. Disabled by default
The target object must have a POLICY datastream.
The XACML editor hooks into ingesting through the interface. When a child is added through the interface, the parent's POLICY will be applied if one exists.
If XACML policies are written or edited by hand, it may result in unexpected behaviour.
Further documentation for this module is available at our wiki.
Having problems or solved a problem? Check out the Islandora google groups for a solution.
If you would like to contribute to this module, please check out CONTRIBUTING.md. In addition, we have helpful Documentation for Developers info, as well as our Developers section on the Islandora.ca site.