SGL avec une premiere implementation de SSO
This commit is contained in:
34
SGL/sso.py
Normal file
34
SGL/sso.py
Normal file
@@ -0,0 +1,34 @@
|
||||
# SGL/sso.py
|
||||
from authentification.models import Profile, Departement
|
||||
from simple_sso.sso_client.client import Client
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
User = get_user_model()
|
||||
|
||||
class SGLClient(Client):
|
||||
def build_user(self, user_data):
|
||||
"""Crée le User et son Profile avec les infos reçues du serveur."""
|
||||
user_data_copy = user_data.copy()
|
||||
user_data.pop("departement")
|
||||
user_data.pop("chef_departement")
|
||||
user_data.pop("groups")
|
||||
|
||||
user = super().build_user(user_data)
|
||||
departement = Departement.objects.get_or_create(
|
||||
nom_departement=user_data_copy.get("departement", "")
|
||||
)[0]
|
||||
|
||||
Profile.objects.update_or_create(
|
||||
user=user,
|
||||
defaults={
|
||||
"departement": departement,
|
||||
"chef_departement": user_data_copy.get("chef_departement", ""),
|
||||
}
|
||||
)
|
||||
|
||||
for group_name in user_data_copy.get("groups", []):
|
||||
group, _ = Group.objects.get_or_create(name=group_name)
|
||||
user.groups.add(group)
|
||||
|
||||
return user
|
||||
Reference in New Issue
Block a user