Commit cd61b40a authored by 's avatar

Took has_role out of 'manage_users' permission

parent e73ad8a3
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
############################################################################## ##############################################################################
"""Access control package""" """Access control package"""
__version__='$Revision: 1.74 $'[11:-2] __version__='$Revision: 1.75 $'[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
...@@ -217,9 +217,20 @@ class BasicUser(Implicit): ...@@ -217,9 +217,20 @@ class BasicUser(Implicit):
hasRole=allowed hasRole=allowed
domains=[] domains=[]
def has_role(self, roles): def has_role(self, roles, object=None):
"""Check to see if a user has a given role or roles."""
if type(roles)==type('s'): if type(roles)==type('s'):
roles=[roles] roles=[roles]
if object is not None:
# Check in object for local roles.
user = self.getUserName()
dict = object.__ac_local_roles__ or {}
if dict.has_key(user):
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() user_roles=self.getRoles()
for role in roles: for role in roles:
if role in user_roles: if role in user_roles:
...@@ -304,7 +315,8 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager, ...@@ -304,7 +315,8 @@ class BasicUserFolder(Implicit, Persistent, Navigation, Tabs, RoleManager,
) )
__ac_permissions__=( __ac_permissions__=(
('Manage users', ('manage_users','getUserNames','getUser','getUsers')), ('Manage users', ('manage_users','getUserNames','getUser','getUsers',
)),
) )
# ---------------------------------- # ----------------------------------
......
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