Osobní nástroje
Nacházíte se zde: Úvod Nápověda FAQ Jak obejít kontrolu oprávnění?
Mailing list

Mailing list o Plone, oznámení novinek atd. Přihlásit/odhlásit nebo procházet archív můžete na této adrese.

 

Jak obejít kontrolu oprávnění?

Ve spoustě případů je třeba provést celý skript nebo jenom část algoritmu skriptu nebo metody třídy s vyššími oprávněními než má uživatel, pod kterým je daný skript nebo metoda spuštěna.

« Zpět na tabulku položek

Nejlepší, aspoň pro mě, je konkrétní příklad, takže zde je okomentovaný fragment kódu, který Vám umožní provést část kódu s oprávněními libovolného na Vašem portále existujícího uživatele. Většinou je třeba provést kód s vyššími oprávněními než má aktuální uživatel.

Tento kód je určen do standardního python kódu nebo externích metod. Pokud potřebujete zvýšit oprávnění ve Script (Python) ve skins, použijte metodu Proxy, popsanou níže.

# importy potřebné k níže uvedenému kódu
from AccessControl import ClassSecurityInfo, getSecurityManager
from AccessControl.SecurityManagement import newSecurityManager, setSecurityManager
from Products.CMFCore.utils import getToolByName
# ziskání objektu portal (Plone site)
portal = getToolByName(self, 'portal_url').getPortalObject()
# získání objektu root portálu (Zope root)
app = portal.getPhysicalRoot() 
# ulozeni SecurityManageru s oprávněními usera, pod kterým je kód spuštěn
sm = getSecurityManager()
try:
    # získání objektu admin usera portálu
    user = app.acl_users.getUser('admin user vaseho portalu')
    try:
        # vytvoření a zavedení SecurityManagera s oprávněním Vámi zadaného admin usera 
        newSecurityManager(None, user)
        # zde napiste svuj kod, který bude proveden pod Vámi zadaným admin userem
    except:
        # zde ošetřete výjimky, pokud je třeba, jinak ponechte takto
        raise
finally:
    # znovuzavedení SecurityManagera s oprávněními usera, pod kterým byl kód spuštěn
    setSecurityManager(sm)

Pokud chcete provést celý skript s oprávněními jiného uživatele, než pod kterým je spouštěn, je nejjednodušší nastavit v ZMI danému skriptu proxy. Při editaci skriptu v ZMI se přepnete na záložku Proxy, kde vyberete skupinu nebo skupiny, s jejichž oprávněními se má daný skript provést. Uložíte změny a máte hotovo.

 

Autor: Petr Sadovský Poslední změna: Pátek 19.03.2010 14:13
Přispěvatelé: naro, lzdych