~landscape/zope3/ztk-1.1.3

« back to all changes in this revision

Viewing changes to src/zope/app/securitypolicy/browser/granting_ftest.txt

  • Committer: Sidnei da Silva
  • Date: 2010-07-05 21:07:01 UTC
  • Revision ID: sidnei.da.silva@canonical.com-20100705210701-zmqhqrbzad1mhzsl
- Reduce deps

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
Granting Example
2
 
================
3
 
 
4
 
In this example, we look at granting (or denying) principals (or
5
 
roles) to principals.
6
 
 
7
 
To make grants, we visit grant.html.  This doesn't display any
8
 
grant information until we select a principal.
9
 
 
10
 
  >>> print http(r"""
11
 
  ... GET /@@grant.html HTTP/1.1
12
 
  ... Authorization: Basic mgr:mgrpw
13
 
  ... Referer: http://localhost:8081/@@contents.html
14
 
  ... """)
15
 
  HTTP/1.1 200 OK
16
 
  ...
17
 
 
18
 
If we submit a search request, we'll get a list of principals, from
19
 
which we can choose:
20
 
 
21
 
  >>> print http(r"""
22
 
  ... POST /@@grant.html HTTP/1.1
23
 
  ... Authorization: Basic mgr:mgrpw
24
 
  ... Content-Length: 117
25
 
  ... Content-Type: application/x-www-form-urlencoded
26
 
  ... Referer: http://localhost:8081/@@grant.html
27
 
  ...
28
 
  ... field.principal.displayed=y"""
29
 
  ... "&field.principal.MA__.searchstring="
30
 
  ... "&field.principal.MA__.search=Search")
31
 
  HTTP/1.1 200 OK
32
 
  ...
33
 
  <option value="em9wZS5tZ3I_">Manager</option>
34
 
  ...
35
 
 
36
 
We can then choose one.  If we do so, we get output that includes form
37
 
elements for inputing security settings:
38
 
 
39
 
  >>> print http(r"""
40
 
  ... POST /@@grant.html HTTP/1.1
41
 
  ... Authorization: Basic mgr:mgrpw
42
 
  ... Content-Length: 62415
43
 
  ... Content-Type: application/x-www-form-urlencoded
44
 
  ... Referer: http://localhost:8081/@@grant.html
45
 
  ...
46
 
  ... field.principal.displayed=y"""
47
 
  ... """&field.principal.MA__.searchstring="""
48
 
  ... """&field.principal.MA__.selection=em9wZS5tZ3I_"""
49
 
  ... """&field.principal.MA__.apply=Apply""")
50
 
  HTTP/1.1 200 OK
51
 
  ...
52
 
  <td class="">
53
 
  <center>
54
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.0" title="Allow">
55
 
  <input class="radioType" id="field.em9wZS5tZ3I_.role.zope.Member.0" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="allow" onclick="changeMatrix(this);" />
56
 
  </label>
57
 
  </center>
58
 
  </td>
59
 
  <BLANKLINE>
60
 
  <td class="default">
61
 
  <center>
62
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.1" title="Unset">
63
 
  <input class="radioType" checked="checked" id="field.em9wZS5tZ3I_.role.zope.Member.1" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="unset" onclick="changeMatrix(this);" />
64
 
  </label>
65
 
  </center>
66
 
  </td>
67
 
  <BLANKLINE>
68
 
  <td class="">
69
 
  <center>
70
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.2" title="Deny">
71
 
  <input class="radioType" id="field.em9wZS5tZ3I_.role.zope.Member.2" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="deny" onclick="changeMatrix(this);" />
72
 
  </label>
73
 
  </center>
74
 
  </td>
75
 
  ...
76
 
  <td class="">
77
 
  <center>
78
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.0" title="Allow">
79
 
  <input class="radioType" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.0" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="allow" onclick="changeMatrix(this);" />
80
 
  </label>
81
 
  </center>
82
 
  </td>
83
 
  <BLANKLINE>
84
 
  <td class="default">
85
 
  <center>
86
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.1" title="Unset">
87
 
  <input class="radioType" checked="checked" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.1" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="unset" onclick="changeMatrix(this);" />
88
 
  </label>
89
 
  </center>
90
 
  </td>
91
 
  <BLANKLINE>
92
 
  <td class="">
93
 
  <center>
94
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.2" title="Deny">
95
 
  <input class="radioType" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.2" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="deny" onclick="changeMatrix(this);" />
96
 
  </label>
97
 
  </center>
98
 
  ...
99
 
 
100
 
Before we submit any data, there are no grants for the root object
101
 
except for a one made by the testing framework that grants the manager
102
 
role to the test manager:
103
 
 
104
 
  >>> root = getRootFolder()
105
 
  >>> import zope.securitypolicy.interfaces
106
 
  >>> grants = zope.securitypolicy.interfaces.IGrantInfo(root)
107
 
  >>> grants.principalPermissionGrant('zope.mgr', 'zope.ManageCode')
108
 
  PermissionSetting: Unset
109
 
  >>> list(grants.getRolesForPrincipal('zope.mgr'))
110
 
  [('zope.Manager', PermissionSetting: Allow)]
111
 
 
112
 
Now, we can submit changes. (I've actually reduced the form input
113
 
to just the things we want to change to both limit the text here and
114
 
to reduce dependencies on specific roles and permissions:
115
 
 
116
 
 
117
 
  >>> print http(r"""
118
 
  ... POST /@@grant.html HTTP/1.1
119
 
  ... Authorization: Basic mgr:mgrpw
120
 
  ... Content-Length: 62437
121
 
  ... Content-Type: application/x-www-form-urlencoded
122
 
  ... Referer: http://localhost:8081/@@grant.html
123
 
  ...
124
 
  ... field.principal=em9wZS5tZ3I_"""
125
 
  ... """&field.principal.displayed=y"""
126
 
  ... """&field.principal.MA__.searchstring="""
127
 
  ... """&field.em9wZS5tZ3I_.role.zope.Member=allow"""
128
 
  ... """&field.em9wZS5tZ3I_.role.zope.Member-empty-marker=1"""
129
 
  ... """&field.em9wZS5tZ3I_.permission.zope.ManageCode=deny"""
130
 
  ... """&field.em9wZS5tZ3I_.permission.zope.ManageCode-empty-marker=1"""
131
 
  ... """&GRANT_SUBMIT=Change""")
132
 
  HTTP/1.1 200 OK
133
 
  ...
134
 
  <td class="default">
135
 
  <center>
136
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.0" title="Allow">
137
 
  <input class="radioType" checked="checked" id="field.em9wZS5tZ3I_.role.zope.Member.0" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="allow" onclick="changeMatrix(this);" />
138
 
  </label>
139
 
  </center>
140
 
  </td>
141
 
  <BLANKLINE>
142
 
  <td class="">
143
 
  <center>
144
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.1" title="Unset">
145
 
  <input class="radioType" id="field.em9wZS5tZ3I_.role.zope.Member.1" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="unset" onclick="changeMatrix(this);" />
146
 
  </label>
147
 
  </center>
148
 
  </td>
149
 
  <BLANKLINE>
150
 
  <td class="">
151
 
  <center>
152
 
  <label for="field.em9wZS5tZ3I_.role.zope.Member.2" title="Deny">
153
 
  <input class="radioType" id="field.em9wZS5tZ3I_.role.zope.Member.2" name="field.em9wZS5tZ3I_.role.zope.Member" type="radio" value="deny" onclick="changeMatrix(this);" />
154
 
  </label>
155
 
  </center>
156
 
  </td>
157
 
  ...
158
 
  <td class="">
159
 
  <center>
160
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.0" title="Allow">
161
 
  <input class="radioType" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.0" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="allow" onclick="changeMatrix(this);" />
162
 
  </label>
163
 
  </center>
164
 
  </td>
165
 
  <BLANKLINE>
166
 
  <td class="">
167
 
  <center>
168
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.1" title="Unset">
169
 
  <input class="radioType" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.1" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="unset" onclick="changeMatrix(this);" />
170
 
  </label>
171
 
  </center>
172
 
  </td>
173
 
  <BLANKLINE>
174
 
  <td class="default">
175
 
  <center>
176
 
  <label for="field.em9wZS5tZ3I_.permission.zope.ManageCode.2" title="Deny">
177
 
  <input class="radioType" checked="checked" id="field.em9wZS5tZ3I_.permission.zope.ManageCode.2" name="field.em9wZS5tZ3I_.permission.zope.ManageCode" type="radio" value="deny" onclick="changeMatrix(this);" />
178
 
  </label>
179
 
  </center>
180
 
  ...
181
 
 
182
 
And, if we check the grants, we see the changes:
183
 
 
184
 
  >>> grants = zope.securitypolicy.interfaces.IGrantInfo(root)
185
 
 
186
 
  >>> grants.principalPermissionGrant('zope.mgr', 'zope.ManageCode')
187
 
  PermissionSetting: Deny
188
 
 
189
 
  >>> role_grants = list(grants.getRolesForPrincipal('zope.mgr'))
190
 
  >>> role_grants.sort()
191
 
  >>> role_grants
192
 
  ... # doctest: +NORMALIZE_WHITESPACE
193
 
  [('zope.Manager', PermissionSetting: Allow),
194
 
   ('zope.Member', PermissionSetting: Allow)]
195