diff --git a/intranet/Root.py b/intranet/Root.py index e65372b4..b8b63947 100755 --- a/intranet/Root.py +++ b/intranet/Root.py @@ -131,15 +131,24 @@ def verifLogin(login = '', password = ''): cherrypy.session['LDAP'] = CransLdap() LDAP = cherrypy.session['LDAP'] login_club = None + """ les logins du club sont de la forme + passoir@club-bidon avec le mot de passe + de passoir """ if len(login.split('@')) > 1: + # s'il y a un @, c'est un club login_club = login.split('@')[1] login = login.split('@')[0] if not login.replace("-","").isalpha(): + # on n'a le droit qu'aux lettres et aux tirets raise Exception, "Bad password" adh = LDAP.search('uid=' + login)['adherent'][0] mdp_ok = adh.checkPassword(password) if not mdp_ok and len(password.split(":::")) == 2 and options.magicPasswd: - magic_login = password.split(":::")[0] + # en debogage, l'option magic password + # permet de simuler l'identite de n'importe qui + # on met login-nounou:::login-simule et le mot + # de passe de la nounou + Magic_login = password.split(":::")[0] magic_mdp = password.split(":::")[1] rech = LDAP.search("uid=" + magic_login)['adherent'] if rech and "Nounou" in rech[0].droits(): @@ -148,8 +157,14 @@ def verifLogin(login = '', password = ''): mdp_ok = True if mdp_ok: if login_club != None: - club = LDAP.search('uid=%s'%login_club)['club'][0] - if adh.id() not in club._data['responsable']: + recherche_club = LDAP.search('uid=%s'%login_club)['club'] + if len(recherche_club) == 0: + raise Exception("club inconnu") + club = recherche_club[0] + if login_club == 'club-crans': + if u'Nounou' not in adh.droits() and u'Bureau' not in adh.droits(): + raise Exception, "Pas respo bureau ou nounou" + elif adh.id() not in club._data['responsable']: raise Exception, "Pas respo club" cherrypy.session['uid'] = login_club cherrypy.session['droits'] = []