Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
intranet
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
2
Issues
2
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nounous-archives
intranet
Commits
28f4aeed
Commit
28f4aeed
authored
Sep 18, 2017
by
Hamza Dely
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[password_reset] Gère les noms d'utilisateurs encodés en UTF-8
parent
43a0eb23
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
10 additions
and
23 deletions
+10
-23
password_reset/forms.py
password_reset/forms.py
+10
-23
No files found.
password_reset/forms.py
View file @
28f4aeed
...
...
@@ -18,6 +18,9 @@
"""
Formulaire de l'application password_reset
"""
from
__future__
import
unicode_literals
#: Import des formulaires
from
django
import
forms
...
...
@@ -26,23 +29,8 @@ 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
):
"""
...
...
@@ -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
[]
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment