diff --git a/kfet/backends.py b/kfet/backends.py index 3729f1bd..ba3bce9d 100644 --- a/kfet/backends.py +++ b/kfet/backends.py @@ -30,9 +30,17 @@ class GenericTeamBackend(object): def authenticate(self, username=None, token=None): valid_token = GenericTeamToken.objects.get(token=token) if username == 'kfet_genericteam' and valid_token: - user, created = User.objects.get_or_create(username='kfet_genericteam') + # Création du user s'il n'existe pas déjà + user, _ = User.objects.get_or_create(username='kfet_genericteam') + profile, _ = CofProfile.objects.get_or_create(user=user) + account, _ = Account.objects.get_or_create( + cofprofile=profile, + trigramme='GNR') + + # Ajoute la permission kfet.is_team à ce user perm_is_team = Permission.objects.get(codename='is_team') user.user_permissions.add(perm_is_team) + return user return None diff --git a/kfet/views.py b/kfet/views.py index 3f1e1f4d..f95fb2c6 100644 --- a/kfet/views.py +++ b/kfet/views.py @@ -42,16 +42,22 @@ def home(request): @teamkfet_required def login_genericteam(request): + # Check si besoin de déconnecter l'utilisateur de CAS profile, _ = CofProfile.objects.get_or_create(user=request.user) - logout_cas = '' + need_cas_logout = False if profile.login_clipper: + need_cas_logout = True + # Récupèration de la vue de déconnexion de CAS + # Ici, car request sera modifié après logout_cas = django_cas_ng.views.logout(request) + # Authentification du compte générique token = GenericTeamToken.objects.create(token=get_random_string(50)) user = authenticate(username="kfet_genericteam", token=token.token) login(request, user) - if logout_cas: + if need_cas_logout: + # Vue de déconnexion de CAS return logout_cas return render(request, "kfet/login_genericteam.html")