From 28f4aeed2afa49113a4cb87f0a95f97fde8f947e Mon Sep 17 00:00:00 2001 From: Hamza Dely Date: Mon, 18 Sep 2017 23:44:56 +0200 Subject: [PATCH] =?UTF-8?q?[password=5Freset]=20G=C3=A8re=20les=20noms=20d?= =?UTF-8?q?'utilisateurs=20encod=C3=A9s=20en=20UTF-8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- password_reset/forms.py | 33 ++++++++++----------------------- 1 file changed, 10 insertions(+), 23 deletions(-) diff --git a/password_reset/forms.py b/password_reset/forms.py index 86f1ce3..038b767 100644 --- a/password_reset/forms.py +++ b/password_reset/forms.py @@ -18,6 +18,9 @@ """ Formulaire de l'application password_reset """ + +from __future__ import unicode_literals + #: Import des formulaires from django import forms @@ -26,27 +29,12 @@ from django.utils.translation import ugettext_lazy as _ #: Fonctions de communication avec la base LDAP from ldap import FILTER_ERROR -from lc_ldap import shortcuts +from lc_ldap import shortcuts, crans_utils -#http://docs.oracle.com/javase/jndi/tutorial/beyond/names/syntax.html -_ldap_escape = { - '(' : r'\(', - ')' : r'\)', - '"' : r'\\\"', - "'" : r"\'", - ',' : r'\\\,', - '+' : r'\\\+', - '<' : r'\\\<', - '>' : r'\\\>', - '\\' : r'\\\\', - } - -def escape_ldap(s): - return "".join(_ldap_escape.get(c, c) for c in str(s)) class EmailForm(forms.Form): """ - Formulaire de demande d'une adresse e-mail. + Formulaire de demande d'une adresse e-mail. """ email = forms.EmailField( label=_(u'Adresse e-mail'), @@ -59,7 +47,7 @@ class EmailForm(forms.Form): Renvoie l'objet LDAP à partir de l'e-mail """ try: - email = escape_ldap(self.cleaned_data['email']) + email = crans_utils.escape(self.cleaned_data['email']) conn = shortcuts.lc_ldap_readonly() # On cherches les objets LDAP tels que : # * le mail est dans le champ `mail` ou `mailExt` @@ -68,7 +56,7 @@ class EmailForm(forms.Form): # * et il a un compte crans # * et il n'a pas de droits res = conn.search( - u"(&(|(mail=%s)(mailExt=%s))\ + "(&(|(mail=%s)(mailExt=%s))\ (!(shadowExpire=0))(aid=*)(uid=*)(!(droits=*)))" % (email, email) ) @@ -84,7 +72,7 @@ class UsernameForm(forms.Form): Formulaire de demande d'un login Cr@ns. """ username = forms.CharField( - label=_(u"Nom d'utilisateur Cr@ns"), + label=_("Nom d'utilisateur Cr@ns"), max_length=254, required=True ) @@ -94,7 +82,7 @@ class UsernameForm(forms.Form): Renvoie l'objet LDAP à partir du login """ try: - login = escape_ldap(self.cleaned_data['username']) + login = crans_utils.escape(self.cleaned_data['username']) conn = shortcuts.lc_ldap_readonly() # On cherches les objets LDAP tels que : # * le login est dans le champ `uid` @@ -102,11 +90,10 @@ class UsernameForm(forms.Form): # * et c'est un adhérent # * et il n'a pas de droits res = conn.search( - u"(&(uid=%s)(!(shadowExpire=0))(aid=*)(!(droits=*)))" % login + "(&(uid=%s)(!(shadowExpire=0))(aid=*)(!(droits=*)))" % login ) return res[0] except FILTER_ERROR: return [] except IndexError: return [] - -- GitLab