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
27b58257
Commit
27b58257
authored
Nov 12, 2015
by
Charlie Jacomme
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[intranet] New rights systems
Le droits crans_name appartient au groupe crans_name
parent
ba4cc4df
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
24 deletions
+28
-24
intranet/login.py
intranet/login.py
+28
-24
No files found.
intranet/login.py
View file @
27b58257
...
...
@@ -21,15 +21,38 @@
import
ldap
from
django.contrib.auth.models
import
Group
,
User
from
django.contrib.auth.models
import
Group
,
User
,
Permission
from
django.contrib.auth.backends
import
ModelBackend
from
django.views.decorators.debug
import
sensitive_variables
from
django.contrib.contenttypes.models
import
ContentType
# Pour se connecter à la base ldap
import
lc_ldap.shortcuts
from
intranet
import
conn_pool
,
settings
GROUPES_SPECIAUX
=
{
# Dictionnaire de groupe spéciaux à attribuer selon le test correspondant
"crans_paiement_ok"
:
lambda
u
:
u
.
paiement_ok
(),
"crans_imprimeur_club"
:
lambda
u
:
u
.
imprimeur_clubs
(),
"crans_respo_club"
:
lambda
u
:
u
.
clubs
(),
"crans_adherent"
:
lambda
u
:
'aid'
in
u
,
"crans_club"
:
lambda
u
:
'cid'
in
u
,
}
def
get_or_create_cransgroup
(
name
):
""" Crée le groupe crans_name avec le droit crans_name.
"""
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
name
)
if
created
:
user_type
=
ContentType
.
objects
.
get
(
app_label
=
"auth"
,
model
=
"user"
)
permission
,
created
=
Permission
.
objects
.
get_or_create
(
codename
=
name
,
name
=
name
,
content_type
=
user_type
)
group
.
permissions
.
add
(
permission
)
group
.
save
()
return
group
def
refresh_droits
(
user
,
cl_user
):
"""Rafraîchit les droits de l'utilisateur django `user' depuis
l'utilisateur LDAP `cl_user'"""
...
...
@@ -48,29 +71,10 @@ def refresh_droits(user, cl_user):
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
)
if
cl_user
.
imprimeur_clubs
():
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_imprimeur_club"
)
group
.
save
()
groups
.
append
(
group
)
if
cl_user
.
clubs
():
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_respo_club"
)
group
.
save
()
groups
.
append
(
group
)
if
'aid'
in
cl_user
:
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_adherent"
)
group
.
save
()
groups
.
append
(
group
)
if
'aid'
in
cl_user
:
group
,
created
=
Group
.
objects
.
get_or_create
(
name
=
"crans_club"
)
group
.
save
()
groups
.
append
(
group
)
groups
.
append
(
get_or_create_cransgroup
(
name
=
u
"crans_%s"
%
cl_droit
.
lower
()))
for
group
in
GROUPES_SPECIAUX
:
if
GROUPES_SPECIAUX
[
group
](
cl_user
):
groups
.
append
(
get_or_create_cransgroup
(
name
=
group
))
user
.
groups
=
[
group
for
group
in
user
.
groups
.
all
()
if
not
group
.
name
.
startswith
(
'crans_'
)
]
user
.
groups
.
add
(
*
groups
)
...
...
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