diff --git a/test_oauth/backend.py b/test_oauth/backend.py index 5349efd0e1976141a6c20dc7820b55a04870ca90..60b871927c7e66508709d1932dbc9818c414ef6c 100644 --- a/test_oauth/backend.py +++ b/test_oauth/backend.py @@ -5,9 +5,12 @@ from django.conf import settings from django.db import transaction +from test_oauth.models import TESTOAuth2Data + + class TESTOAuth2Backend(ModelBackend): - def authenticate(self, id=None, username=None, **profile): - if id is None or username is None: + def authenticate(self, token=None, id=None, username=None, **profile): + if id is None or username is None or token is None: return None user, _ = get_user_model().objects.get_or_create( @@ -15,6 +18,14 @@ class TESTOAuth2Backend(ModelBackend): username=username ) + data, _ = TESTOAuth2Data.objects.update_or_create( + user=user, + defaults={ + 'access_token': token['access_token'], + 'refresh_token': token['refresh_token'], + } + ) + if getattr(settings, 'TEST_OAUTH_CREATE_GROUPS', False): self._do_create_groups(user, profile.get('groups', [])) diff --git a/test_oauth/views.py b/test_oauth/views.py index a2a94fb2f0d096802d1fed5f1e79dbe74e973802..b471749913e6e5f1c124d6b06094c1c0c6e4759a 100644 --- a/test_oauth/views.py +++ b/test_oauth/views.py @@ -31,6 +31,6 @@ def callback(request): session = TESTOAuth2Session(token=token) - auth.login(request, auth.authenticate(**session.profile)) + auth.login(request, auth.authenticate(token=token, **session.profile)) return redirect(getattr(settings, 'TEST_OAUTH_REDIRECT', '/'))