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
609a23fa
Commit
609a23fa
authored
Feb 07, 2014
by
Valentin Samir
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[login, cas_login] Factorisation du code des fonction refresh_fields et refresh_droits
parent
4b741d88
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
38 deletions
+44
-38
cas_login.py
cas_login.py
+3
-2
login.py
login.py
+41
-36
No files found.
cas_login.py
View file @
609a23fa
...
...
@@ -27,6 +27,7 @@ from django.utils.importlib import import_module
from
django_cas.backends
import
CASBackend
,
_verify
from
django_cas.models
import
User
import
login
conn_pool
=
import_module
(
'conn_pool'
,
'intranet'
)
class
CransCASBackend
(
CASBackend
):
...
...
@@ -62,8 +63,8 @@ class CransCASBackend(CASBackend):
except
ldap
.
INVALID_CREDENTIALS
:
return
None
self
.
refresh_droits
(
user
,
ldap_user
)
self
.
refresh_fields
(
user
,
ldap_user
)
login
.
refresh_droits
(
user
,
ldap_user
)
login
.
refresh_fields
(
user
,
ldap_user
)
return
user
def
refresh_droits
(
self
,
user
,
cl_user
):
...
...
login.py
View file @
609a23fa
...
...
@@ -33,6 +33,45 @@ import lc_ldap.shortcuts
conn_pool
=
import_module
(
'conn_pool'
,
'intranet'
)
def
refresh_droits
(
user
,
cl_user
):
"""Rafraîchit les droits de l'utilisateur django `user' depuis
l'utilisateur LDAP `cl_user'"""
cl_droits
=
[
x
.
value
for
x
in
cl_user
.
get
(
'droits'
,
[])]
if
u
"Nounou"
in
cl_droits
:
user
.
is_staff
=
True
user
.
is_superuser
=
True
else
:
user
.
is_staff
=
False
user
.
is_superuser
=
False
groups
=
[]
for
cl_droit
in
cl_droits
:
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_%s"
%
cl_droit
.
lower
())
group
.
save
()
groups
.
append
(
group
)
if
cl_user
.
paiement_ok
():
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_paiement_ok"
)
group
.
save
()
groups
.
append
(
group
)
user
.
groups
=
[
group
for
group
in
user
.
groups
.
all
()
if
not
group
.
name
.
startswith
(
'crans_'
)
]
user
.
groups
.
add
(
*
groups
)
user
.
save
()
def
refresh_fields
(
user
,
cl_user
):
"""Rafraîchit les champs correspondants à l'utilisateur (nom,
prénom, email)"""
user
.
first_name
=
unicode
(
cl_user
[
'prenom'
][
0
])
user
.
last_name
=
unicode
(
cl_user
[
'nom'
][
0
])
mail
=
unicode
(
cl_user
[
'mail'
][
0
])
if
'@'
not
in
mail
:
# Ne devrait pas arriver (pour migration)
mail
+=
u
'@crans.org'
user
.
email
=
mail
user
.
save
()
class
LDAPUserBackend
(
ModelBackend
):
"""Authentifie un utilisateur à l'aide de la base LDAP"""
...
...
@@ -62,44 +101,10 @@ class LDAPUserBackend(ModelBackend):
user
=
User
(
username
=
django_username
,
password
=
"LDAP Backend User!"
)
user
.
save
()
conn_pool
.
CONNS
[
django_username
]
=
conn
self
.
refresh_droits
(
user
,
ldap_user
)
self
.
refresh_fields
(
user
,
ldap_user
)
refresh_droits
(
user
,
ldap_user
)
refresh_fields
(
user
,
ldap_user
)
return
user
def
refresh_droits
(
self
,
user
,
cl_user
):
"""Rafraîchit les droits de l'utilisateur django `user' depuis
l'utilisateur LDAP `cl_user'"""
cl_droits
=
[
x
.
value
for
x
in
cl_user
[
'droits'
]]
if
u
"Nounou"
in
cl_droits
:
user
.
is_staff
=
True
user
.
is_superuser
=
True
else
:
user
.
is_staff
=
False
user
.
is_superuser
=
False
groups
=
[]
for
cl_droit
in
cl_droits
:
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_%s"
%
cl_droit
.
lower
())
group
.
save
()
groups
.
append
(
group
)
user
.
groups
.
add
(
*
groups
)
user
.
save
()
def
refresh_fields
(
self
,
user
,
cl_user
):
"""Rafraîchit les champs correspondants à l'utilisateur (nom,
prénom, email)"""
user
.
first_name
=
unicode
(
cl_user
[
'prenom'
][
0
])
user
.
last_name
=
unicode
(
cl_user
[
'nom'
][
0
])
mail
=
unicode
(
cl_user
[
'mail'
][
0
])
if
'@'
not
in
mail
:
# Ne devrait pas arriver (pour migration)
mail
+=
u
'@crans.org'
user
.
email
=
mail
user
.
save
()
def
get_user
(
self
,
uid
):
"""Récupère l'objet django correspondant à l'uid"""
try
:
...
...
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