Commit bddecc2a authored by matt@zope.com's avatar matt@zope.com

Update so callbacks happen as "nobody" user.

parent a1625a5f
...@@ -85,10 +85,10 @@ ...@@ -85,10 +85,10 @@
""" """
Core session tracking SessionData class. Core session tracking SessionData class.
$Id: Transience.py,v 1.11 2001/11/07 20:20:26 matt Exp $ $Id: Transience.py,v 1.12 2001/11/07 22:09:53 matt Exp $
""" """
__version__='$Revision: 1.11 $'[11:-2] __version__='$Revision: 1.12 $'[11:-2]
import Globals import Globals
from Globals import HTMLFile, MessageDialog from Globals import HTMLFile, MessageDialog
...@@ -98,7 +98,10 @@ from TransienceInterfaces import Transient, DictionaryLike, ItemWithId,\ ...@@ -98,7 +98,10 @@ from TransienceInterfaces import Transient, DictionaryLike, ItemWithId,\
from OFS.SimpleItem import SimpleItem from OFS.SimpleItem import SimpleItem
from Persistence import Persistent, PersistentMapping from Persistence import Persistent, PersistentMapping
from Acquisition import Implicit, aq_base from Acquisition import Implicit, aq_base
from AccessControl import ClassSecurityInfo from AccessControl import ClassSecurityInfo, getSecurityManager
from AccessControl.SecurityManagement import newSecurityManager
import AccessControl.SpecialUsers
from AccessControl.User import nobody
from BTrees import OOBTree from BTrees import OOBTree
from zLOG import LOG, WARNING from zLOG import LOG, WARNING
import os.path import os.path
...@@ -124,6 +127,7 @@ MANAGE_CONTAINER_PERM = 'Manage Transient Object Container' ...@@ -124,6 +127,7 @@ MANAGE_CONTAINER_PERM = 'Manage Transient Object Container'
constructTransientObjectContainerForm = HTMLFile( constructTransientObjectContainerForm = HTMLFile(
'dtml/addTransientObjectContainer', globals()) 'dtml/addTransientObjectContainer', globals())
def constructTransientObjectContainer(self, id, title='', timeout_mins=20, def constructTransientObjectContainer(self, id, title='', timeout_mins=20,
addNotification=None, delNotification=None, addNotification=None, delNotification=None,
REQUEST=None): REQUEST=None):
...@@ -169,7 +173,7 @@ class TransientObjectContainer(SimpleItem): ...@@ -169,7 +173,7 @@ class TransientObjectContainer(SimpleItem):
security.setPermissionDefault(ACCESS_CONTENTS_PERM, security.setPermissionDefault(ACCESS_CONTENTS_PERM,
['Manager','Anonymous']) ['Manager','Anonymous'])
security.setPermissionDefault(ACCESS_TRANSIENTS_PERM, security.setPermissionDefault(ACCESS_TRANSIENTS_PERM,
['Manager','Anonymous']) ['Manager','Anonymous','Sessions'])
security.setPermissionDefault(CREATE_TRANSIENTS_PERM, security.setPermissionDefault(CREATE_TRANSIENTS_PERM,
['Manager',]) ['Manager',])
...@@ -318,6 +322,9 @@ class TransientObjectContainer(SimpleItem): ...@@ -318,6 +322,9 @@ class TransientObjectContainer(SimpleItem):
if callable(method): if callable(method):
try: try:
user = getSecurityManager().getUser()
try:
newSecurityManager(None, nobody)
method(item, self) method(item, self)
except: except:
# dont raise, just log # dont raise, just log
...@@ -328,6 +335,8 @@ class TransientObjectContainer(SimpleItem): ...@@ -328,6 +335,8 @@ class TransientObjectContainer(SimpleItem):
'/'.join(path)), '/'.join(path)),
error=sys.exc_info() error=sys.exc_info()
) )
finally:
newSecurityManager(None, user)
else: else:
err = '%s in %s attempted to call non-callable %s' err = '%s in %s attempted to call non-callable %s'
path = self.getPhysicalPath() path = self.getPhysicalPath()
......
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