Skip to content

Latest commit

 

History

History
96 lines (67 loc) · 2.26 KB

zcml.rst

File metadata and controls

96 lines (67 loc) · 2.26 KB

zope.security.zcml

Configuring security via ZCML

zope.security provides a ZCML file that configures some utilities and a couple of permissions:

>>> from zope.component import getGlobalSiteManager >>> from zope.configuration.xmlconfig import XMLConfig >>> from zope.component.testing import setUp >>> import zope.security >>> setUp() # clear global component registry >>> XMLConfig('permissions.zcml', zope.security)()

>>> len(list(getGlobalSiteManager().registeredUtilities())) 7

Clear the current state:

>>> from zope.component.testing import setUp, tearDown >>> tearDown() >>> setUp()

>>> XMLConfig('configure.zcml', zope.security)()

>>> len(list(getGlobalSiteManager().registeredUtilities())) 10

zope.security.zcml.Permission

Let's look at an example:

>>> from zope.security.zcml import Permission >>> class FauxContext(object): ... permission_mapping = {'zope.ManageCode':'zope.private'} ... _actions = [] ... def action(self, **kws): ... self._actions.append(kws) >>> context = FauxContext() >>> field = Permission().bind(context)

Let's test the fromUnicode method:

>>> field.fromUnicode(u'zope.foo') 'zope.foo' >>> field.fromUnicode(u'zope.ManageCode') 'zope.private'

Now let's see whether validation works alright

>>> field._validate('zope.ManageCode') >>> context._actions[0]['args'] (None, 'zope.foo')

>>> from zope.schema.interfaces import InvalidId >>> try: ... field._validate('3 foo') ... except InvalidId as e: ... e InvalidId('3 foo')

zope.Public is always valid >>> field._validate('zope.Public')

zope.security.zcml.ISecurityPolicyDirective

zope.security.zcml.securityPolicy

zope.security.zcml.IPermissionDirective

zope.security.zcml.permission

zope.security.zcml.IRedefinePermission

zope.security.zcml.redefinePermission