[Checkins] SVN: z3c.securitytool/trunk/src/z3c/securitytool/ Fixed
issue with permission details view not displaying all roles
and permissions
Daniel Blackburn
blackburnd at gmail.com
Thu Feb 7 15:03:44 EST 2008
Log message for revision 83651:
Fixed issue with permission details view not displaying all roles and permissions
Changed:
U z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt
U z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
-=-
Modified: z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt 2008-02-07 19:18:43 UTC (rev 83650)
+++ z3c.securitytool/trunk/src/z3c/securitytool/browser/permdetails.pt 2008-02-07 20:03:43 UTC (rev 83651)
@@ -31,7 +31,8 @@
roles view/permissionDetails/roles;
groups view/permissionDetails/groups">
- <h3 tal:condition="permissions">Directly provided permissions in context(s)</h3>
+ <h3 tal:condition="permissions">Permissions directly
+ responsible for access</h3>
<div class="contentList" tal:condition="permissions">
<span tal:repeat="permission permissions">
<span tal:content="view/read_perm"/>
@@ -42,7 +43,8 @@
</div>
<br tal:condition="permissions">
- <h3 tal:condition="roles">Permissions provided by roles in context(s)</h3>
+ <h3 tal:condition="roles">Roles directly responsible for
+ access</h3>
<div class="contentList" tal:condition="roles">
<div tal:repeat="role_context roles">
<span tal:content="role_context" />:
@@ -56,7 +58,8 @@
</div>
</div>
- <b3 tal:condition="groups">Provided by group(s) in context(s)</b3>
+ <b3 tal:condition="groups">Groups directly responsible
+ for access</b3>
<div class="contentList" tal:condition="groups">
<div tal:repeat="group_id groups">
<div tal:content="group_id">zope.Authenticated</div>
Modified: z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py
===================================================================
--- z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py 2008-02-07 19:18:43 UTC (rev 83650)
+++ z3c.securitytool/trunk/src/z3c/securitytool/securitytool.py 2008-02-07 20:03:43 UTC (rev 83651)
@@ -161,6 +161,7 @@
ifaces = tuple(providedBy(self.context))
for iface in ifaces:
+
for view_reg in getViews(iface, IBrowserRequest):
view = self.getView(view_reg, skin)
if not view:
@@ -253,7 +254,6 @@
def permissionDetails(self, principal_id, view_name, skin=IBrowserRequest):
"""Get permission details for a given principal and view.
-
Includes the permissions set by the groups the principal belongs to.
"""
principals = zapi.principals()
@@ -270,18 +270,24 @@
read_perm = getViewInfoDictionary(view_reg)['read_perm']
break
+ # Here we want to aggregate all the rolePermissions in one place
+ rolePermissions = []
+ for name,setting in settings:
+ if setting.get('rolePermissions',''):
+ rolePermissions.extend(setting['rolePermissions'])
+
if read_perm is None:
prinPermSettings = {'permissions': [],'roles': {},'groups': {}}
read_perm ='zope.Public'
else:
prinPermSettings = self._permissionDetails(principal, read_perm,
- settings)
+ settings,rolePermissions)
prinPermSettings['read_perm'] = read_perm
return prinPermSettings
- def _permissionDetails(self, principal, read_perm, settings):
+ def _permissionDetails(self, principal, read_perm, settings, rolePermissions):
"""Recursively get the permission details for a given principal and
permission from a security mapping.
"""
@@ -293,7 +299,8 @@
for name, setting in settings:
prinPermMap = setting.get('principalPermissions', ())
prinRoleMap = setting.get('principalRoles', ())
- rolePermMap = setting.get('rolePermissions', ())
+ #rolePermMap = setting.get('rolePermissions', ())
+ rolePermMap = rolePermissions
permSetting = principalDirectlyProvidesPermission(prinPermMap,
principal.id, read_perm)
if permSetting:
@@ -310,7 +317,7 @@
for group_id in principal.groups:
group = principals.getPrincipal(group_id)
group_settings = self._permissionDetails(group,
- read_perm, settings)
+ read_perm, settings, rolePermMap)
if hasPermissionSetting(group_settings):
principalSettings['groups'][group_id] = group_settings
@@ -410,6 +417,7 @@
for (r, p, s) in settings]
rolePermissions = IRolePermissionMap(ob, None)
+
if rolePermissions is not None:
settings = rolePermissions.getRolesAndPermissions()
data['rolePermissions'] = [
More information about the Checkins
mailing list