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)