Commit 338176bb authored by Ken Manheimer's avatar Ken Manheimer

BasicUser.has_role(): Wasn't recursing on local roles - we now use

self.getRolesInContext() when object is specified, which does The
Right Thing.
parent 8f0e4824
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
############################################################################## ##############################################################################
"""Access control package""" """Access control package"""
__version__='$Revision: 1.80 $'[11:-2] __version__='$Revision: 1.81 $'[11:-2]
import Globals, App.Undo, socket, regex import Globals, App.Undo, socket, regex
from Globals import HTMLFile, MessageDialog, Persistent, PersistentMapping from Globals import HTMLFile, MessageDialog, Persistent, PersistentMapping
...@@ -222,16 +222,10 @@ class BasicUser(Implicit): ...@@ -222,16 +222,10 @@ class BasicUser(Implicit):
if type(roles)==type('s'): if type(roles)==type('s'):
roles=[roles] roles=[roles]
if object is not None: if object is not None:
# Check in object for local roles. user_roles = self.getRolesInContext(object)
user = self.getUserName() else:
dict = object.__ac_local_roles__ or {} # Global roles only...
if dict.has_key(user): user_roles=self.getRoles()
local_roles = dict[user]
for role in roles:
if role in local_roles:
return 1
# No local roles, try global roles...
user_roles=self.getRoles()
for role in roles: for role in roles:
if role in user_roles: if role in user_roles:
return 1 return 1
......
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