May 2012

May 05, 2012

Ploneでパーミッションを無視して処理を実行したい

Ploneでは、強力なAccess Controlの仕組みがありますが、他のシステムと連携して動作するような場合、権限を無視して処理を実行したい場合もあると思います。

当然非推奨ですが、下記のようなコードで実現できるようです。
from AccessControl.SecurityManagement import newSecurityManager, setSecurityManager, getSecurityManager
from AccessControl.User import UnrestrictedUser

def excecuteAsManager(func):
  old_sm = getSecurityManager()
  try:
    newSecurityManager(None, UnrestrictedUser('admin', '', ['Manager'], []))
    func()
  finally:
    setSecurityManager(old_sm)
参考: http://collective-docs.readthedocs.org/en/latest/security/permissions.html

matssaku at 15:57|PermalinkComments(0)TrackBack(0)clip!Zope | plone