~vcs-imports/zope.app.securitypolicy/trunk

« back to all changes in this revision

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

  • Committer: rogerineichen
  • Date: 2007-09-26 14:51:44 UTC
  • Revision ID: vcs-imports@canonical.com-20070926145144-lyl0lnz4xl2jb41i
Revert my latest changes, was the wrong checkout base

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.app.securitypolicy.interfaces
 
106
  >>> grants = zope.app.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.app.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