[[PageOutline(2-5,Contents,pullout)]] = TracPermissionFilterPlugin = == Description == Plugin to remove Trac permissions using a blacklist and/or a whitelist. This hack was born to be able to ''archive'' projects without touching the Trac database, the idea is to use the filter to disable all permissions that allow users to modify it without changing their permissions on the database and be able to restore the project to the original state simply disabling the filter. To filter permissions as desired the plugin has to be the first one on the `permission_policy` list and it works as follows: 1. If the `blacklist` is available and the permission being considered is on the list the `check_permission` function returns `False` and the permission evaluation stops. 2. If the `whitelist` is available and the permission we are checking is not on the list the `check_permission` function returns `False` and the permission evaluation stops. 3. If the evaluation gets here the permission is ignored by the plugin and the next permission policy is checked. == Bugs/Feature Requests == Existing bugs and feature requests for TracPermissionFilterPlugin are [report:9?COMPONENT=TracPermissionFilterPlugin here]. If you have any issues, create a [http://trac-hacks.org/newticket?component=TracPermissionFilterPlugin&owner=sto new ticket]. == Download == Download the zipped source from [download:tracpermissionfilterplugin here]. == Source == You can check out TracPermissionFilterPlugin from [http://trac-hacks.org/svn/tracpermissionfilterplugin here] using Subversion, or [source:tracpermissionfilterplugin browse the source] with Trac. == Example == After enabling the plugin in your `trac.ini`: {{{ tracpermissionfilter.* = enabled }}} Add a section with the list of permissions to allow: {{{ [permission-filter] whitelist = BROWSER_VIEW,CHANGESET_VIEW,FILE_VIEW,LOG_VIEW,MILESTONE_VIEW,REPORT_SQL_VIEW,REPORT_VIEW,ROADMAP_VIEW,SEARCH_VIEW,TICKET_VIEW,TIMELINE_VIEW,WIKI_VIEW }}} or a list of permissions to deny: {{{ [permission-filter] blacklist = BROWSER_VIEW }}} And remember to put the filter the first on your project `permission_policies`: {{{ [trac] permission_policies = PermissionFilter, DefaultPermissionPolicy }}} == Recent Changes == [[ChangeLog(tracpermissionfilterplugin, 3)]] == Author/Contributors == '''Author:''' [wiki:sto] [[BR]] '''Maintainer:''' [wiki:sto] [[BR]] '''Contributors:'''