diff --git a/server/vbv_lernwelt/core/managers.py b/server/vbv_lernwelt/core/managers.py index 59ff2c77..5d47b767 100644 --- a/server/vbv_lernwelt/core/managers.py +++ b/server/vbv_lernwelt/core/managers.py @@ -1,14 +1,15 @@ +from django.contrib.auth.models import AbstractUser from django.db import models class UserManager(models.Manager): - def create_or_update_by_email(self, email: str, first_name: str, last_name: str, username: str) -> bool: - + def create_or_update_by_email(self, email: str, first_name: str, last_name: str, username: str) -> tuple[ + AbstractUser, bool]: # create or sync user with OpenID Data - _user, created = self.model.objects.get_or_create(email=email, defaults={ + user, created = self.model.objects.get_or_create(email=email, defaults={ "first_name": first_name, "last_name": last_name, "username": username }) - return created + return user, created diff --git a/server/vbv_lernwelt/sso/views.py b/server/vbv_lernwelt/sso/views.py index 1434b2f7..eab0ae32 100644 --- a/server/vbv_lernwelt/sso/views.py +++ b/server/vbv_lernwelt/sso/views.py @@ -31,9 +31,10 @@ def authorize(request): return redirect(f'/{OAUTH_REDIRECT}?state=someerror') # to be defined user_data = _user_data_from_token_data(deocded_token) - created = get_user_model().objects.create_or_update_by_email(user_data["email"], user_data["first_name"], + user, created = get_user_model().objects.create_or_update_by_email(user_data["email"], user_data["first_name"], user_data["last_name"], user_data["username"]) + dj_login(request, user) return redirect(f'/{OAUTH_REDIRECT}?state=success') # to be defined