summaryrefslogtreecommitdiff
path: root/docs/api/security.rst
blob: 64897991dc1118738d7bf55779b72344538ff050 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
Security APIs
=============

.. automodule:: zope.component.security

   .. autofunction:: securityAdapterFactory

If a permission is provided when wrapping the adapter, it will be
wrapped in a LocatingAdapterFactory.

.. doctest::

   >>> class Factory(object):
   ...     pass

If both locate and trusted are False and a non-public
permission is provided, then the factory is wrapped into a
LocatingUntrustedAdapterFactory:

.. doctest::

   >>> from zope.component.security import securityAdapterFactory
   >>> from zope.security.adapter import LocatingUntrustedAdapterFactory
   >>> factory = securityAdapterFactory(Factory, 'zope.AnotherPermission',
   ...    locate=False, trusted=False)
   >>> isinstance(factory, LocatingUntrustedAdapterFactory)
   True

If a PublicPermission is provided, then the factory is not touched.

.. doctest::

   >>> from zope.component.security import PublicPermission
   >>> factory = securityAdapterFactory(Factory, PublicPermission,
   ...    locate=False, trusted=False)
   >>> factory is Factory
   True

Same for CheckerPublic:

.. doctest::

   >>> from zope.security.checker import CheckerPublic
   >>> factory = securityAdapterFactory(Factory, CheckerPublic,
   ...    locate=False, trusted=False)
   >>> factory is Factory
   True

If the permission is None, the factory isn't touched:

.. doctest::

   >>> factory = securityAdapterFactory(Factory, None,
   ...    locate=False, trusted=False)
   >>> factory is Factory
   True

If the factory is trusted and a no permission is provided then the
adapter is wrapped into a TrustedAdapterFactory:

.. doctest::

   >>> from zope.security.adapter import TrustedAdapterFactory
   >>> factory = securityAdapterFactory(Factory, None,
   ...    locate=False, trusted=True)
   >>> isinstance(factory, TrustedAdapterFactory)
   True

Same for PublicPermission:

.. doctest::

   >>> factory = securityAdapterFactory(Factory, PublicPermission,
   ...    locate=False, trusted=True)
   >>> isinstance(factory, TrustedAdapterFactory)
   True

Same for CheckerPublic:

.. doctest::

   >>> factory = securityAdapterFactory(Factory, CheckerPublic,
   ...    locate=False, trusted=True)
   >>> isinstance(factory, TrustedAdapterFactory)
   True

If the factory is trusted and a locate is true, then the
adapter is wrapped into a LocatingTrustedAdapterFactory:

.. doctest::

   >>> from zope.security.adapter import LocatingTrustedAdapterFactory
   >>> factory = securityAdapterFactory(Factory, 'zope.AnotherPermission',
   ...    locate=True, trusted=True)
   >>> isinstance(factory, LocatingTrustedAdapterFactory)
   True