Commit df7e95ab authored by Jim Fulton's avatar Jim Fulton

More debugging of "shared" roles support. Waaaaaa.

parent eae39718
"""Access control package""" """Access control package"""
__version__='$Revision: 1.48 $'[11:-2] __version__='$Revision: 1.49 $'[11:-2]
from PersistentMapping import PersistentMapping from PersistentMapping import PersistentMapping
...@@ -29,11 +29,7 @@ class User(Implicit, Persistent): ...@@ -29,11 +29,7 @@ class User(Implicit, Persistent):
def _shared_roles(self, parent): def _shared_roles(self, parent):
r=[] r=[]
while 1: while 1:
if hasattr(parent, 'aq_parent'): if hasattr(parent,'__roles__'):
while hasattr(parent.aq_self,'aq_self'):
parent=parent.aq_self
parent=parent.aq_parent
else: return r
roles=parent.__roles__ roles=parent.__roles__
if roles is None: return 'Anonymous', if roles is None: return 'Anonymous',
if 'Shared' in roles: if 'Shared' in roles:
...@@ -43,6 +39,11 @@ class User(Implicit, Persistent): ...@@ -43,6 +39,11 @@ class User(Implicit, Persistent):
else: else:
try: return r+list(roles) try: return r+list(roles)
except: return r except: return r
if hasattr(parent, 'aq_parent'):
while hasattr(parent.aq_self,'aq_self'):
parent=parent.aq_self
parent=parent.aq_parent
else: return r
def allowed(self,parent,roles=None): def allowed(self,parent,roles=None):
usr_roles=self.roles usr_roles=self.roles
...@@ -64,7 +65,9 @@ class User(Implicit, Persistent): ...@@ -64,7 +65,9 @@ class User(Implicit, Persistent):
if 'Shared' in roles: if 'Shared' in roles:
# Damn, old role setting. Waaa # Damn, old role setting. Waaa
roles=self._shared_roles(parent) roles=self._shared_roles(parent)
if 'Anonymous' in roles: return 1 if roles is None or 'Anonymous' in roles: return 1
while 'Shared' in roles: roles.remove('Shared')
return self.allowed(parent,roles)
return None return None
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment