33 lines
1.1 KiB
Python
33 lines
1.1 KiB
Python
|
|
# SGL/sso.py
|
||
|
|
from gestion_employe.models import Employe, 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 SIRHClient(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=user_data_copy.get("departement", ""))[0]
|
||
|
|
|
||
|
|
Employe.objects.update_or_create(
|
||
|
|
user = user,
|
||
|
|
defaults = {
|
||
|
|
"departement": departement,
|
||
|
|
"chef": 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
|