Edgewall Software

Changes between Initial Version and Version 1 of TracDev/PluginDevelopment/ExtensionPoints/trac.perm.IPermissionPolicy


Ignore:
Timestamp:
Jun 3, 2011, 11:24:13 AM (13 years ago)
Author:
Peter Suter
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • TracDev/PluginDevelopment/ExtensionPoints/trac.perm.IPermissionPolicy

    v1 v1  
     1== Extension Point : ''IPermissionPolicy'' ==
     2
     3||'''Interface'''||''IPermissionPolicy''||'''Since'''||0.11||
     4||'''Module'''||''trac.perm''||'''Source'''||[source:trunk/trac/perm.py#L114 perm.py]||
     5
     6The ''IPermissionPolicy'' implementations define policies for how to check for (fine grained) permissions.
     7
     8== Purpose ==
     9
     10The TracPermissions system defines coarse permissions to control which users have access to which modules. TracFineGrainedPermissions introduced more fine grained control over permissions for individual resources. The IPermissionPolicy interface is used to implement this new system, re-implement the legacy behavior and allow plugins to extend the permission policies.
     11
     12== Usage ==
     13
     14Implementing the interface follows the standard guidelines found in [wiki:TracDev/ComponentArchitecture] and of course [wiki:TracDev/PluginDevelopment].
     15
     16Only the ''permission_policies'' configured in [wiki:TracIni#trac-section trac.ini] will be used (in that order).
     17
     18== Examples ==
     19
     20See [#DebugPolicy], [#PublicWikiPolicy], [#SecurityTicketsPolicy]
     21
     22== Available Implementations ==
     23
     24=== [source:trunk/trac/perm.py#L249 trac.perm.DefaultPermissionPolicy] === #DefaultPermissionPolicy
     25
     26Reimplements the pre-0.11 behavior which checks for the traditional coarse grained style permissions described in TracPermissions.
     27
     28=== [source:trunk/trac/attachment.py#L894 trac.attachment.LegacyAttachmentPolicy] === #LegacyAttachmentPolicy
     29
     30Reimplements the legacy coarse grained permissions checks for attachments, by mapping ATTACHMENT_* permissions to realm specific ones. Allows other plugins to participate in this by implementing [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.attachment.ILegacyAttachmentPolicyDelegate ILegacyAttachmentPolicyDelegate].
     31
     32=== [source:trunk/tracopt/perm/authz_policy.py#L33 tracopt.perm.authz_policy.AuthzPolicy] === #AuthzPolicy
     33
     34See [wiki:TracFineGrainedPermissions#AuthzPolicy TracFineGrainedPermissions]
     35
     36=== [source:trunk/trac/versioncontrol/svn_authz.py#L111 trac.versioncontrol.svn_authz.AuthzSourcePolicy] === #AuthzSourcePolicy
     37
     38See [wiki:TracFineGrainedPermissions#AuthzSourcePolicy TracFineGrainedPermissions]
     39
     40=== [source:trunk/sample-plugins/permissions/debug_perm.py#L8 sample-plugins.permissions.debug_perm.DebugPolicy] === #DebugPolicy
     41
     42A sample plugin that is only useful for Trac Development. It verifies the well-formedness of the permission checks.
     43
     44=== [source:trunk/sample-plugins/permissions/public_wiki_policy.py#L10 sample-plugins.permissions.public_wiki_policy.PublicWikiPolicy] === #PublicWikiPolicy
     45 
     46A sample plugin that allows public access to some wiki pages, illustrating how to check permission on realms.
     47
     48=== [source:trunk/sample-plugins/permissions/vulnerability_tickets.py#L7 sample-plugins.permissions.vulnerability_tickets.SecurityTicketsPolicy] === #SecurityTicketsPolicy
     49
     50A sample plugin that prevents public access to security sensitive tickets.
     51
     52== Additional Information and References ==
     53
     54 * [http://www.edgewall.org/docs/trac-trunk/html/api/trac_perm.html#trac.perm.IPermissionPolicy API Reference]
     55 * See [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.perm.IPermissionStore IPermissionStore], [wiki:TracDev/PluginDevelopment/ExtensionPoints/trac.perm.IPermissionRequestor IPermissionRequestor]