
Tiens, magiquement, tout le monde avait le droit de créditer des factures (par exemple) ... darcs-hash:20090323152408-ddb99-407f6a546493ed368f95c04f1a88835997611e20.gz
46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from cherrypy.filters.basefilter import BaseFilter
|
|
import cherrypy._cputil
|
|
import cherrypy
|
|
|
|
##########################
|
|
# verification des droits
|
|
##########################
|
|
#
|
|
def verifDroits(mesDroits, lesDroitsQuilFaut):
|
|
if not type(mesDroits) == list:
|
|
raise ValueError, "mesDroits doit etre une liste"
|
|
if "personnel" in mesDroits and not "personnel" in lesDroitsQuilFaut:
|
|
return False
|
|
elif "personnel" in lesDroitsQuilFaut:
|
|
return True
|
|
if (lesDroitsQuilFaut == "all") or (lesDroitsQuilFaut == []):
|
|
return True
|
|
if ("Nounou" in mesDroits):
|
|
return True
|
|
if type(lesDroitsQuilFaut) == str:
|
|
return lesDroitsQuilFaut in mesDroits
|
|
elif type(lesDroitsQuilFaut) == list:
|
|
return True in [d in mesDroits for d in lesDroitsQuilFaut]
|
|
return False
|
|
|
|
class AuthorisationsFilter(BaseFilter):
|
|
|
|
def before_main(self):
|
|
if not cherrypy.config.get('sessionAuthenticateFilter.on', False):
|
|
return
|
|
if not cherrypy.session.get("session_key"):
|
|
return
|
|
droits = cherrypy.config.get('crans.droits', 'all')
|
|
if not verifDroits(cherrypy.session['droits'], droits):
|
|
raise cherrypy.HTTPError(403, "Vous n'avez pas les droits nécessaires pour accéder à cette page.")
|
|
|
|
##########################
|
|
# mise en place des droits
|
|
##########################
|
|
#
|
|
def setDroits(chemin, lesDroitsQuilFaut):
|
|
settings= {
|
|
chemin:
|
|
{ 'crans.droits': lesDroitsQuilFaut}
|
|
}
|
|
cherrypy.config.update(settings)
|