Skip to content

Commit ae8d60d

Browse files
lansegAndrey Rusakov
and
Andrey Rusakov
authored
feat: GSGGR-262 Also update user identity when login from OIDC (#92)
* Also update user identity when login from OIDC * Updated the lock file --------- Co-authored-by: Andrey Rusakov <andrey.rusakov@camptocamp.com>
1 parent f59e265 commit ae8d60d

File tree

2 files changed

+141
-769
lines changed

2 files changed

+141
-769
lines changed

oidc.py

+8-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from django.views.decorators.csrf import csrf_exempt
1212
from django.http import JsonResponse
1313
from django.contrib.auth import get_user_model
14+
from api.models import Identity
1415

1516
UserModel = get_user_model()
1617

@@ -22,7 +23,13 @@ def _updateUser(user, claims):
2223
user.email = claims.get("email")
2324
user.first_name = claims.get("given_name")
2425
user.last_name = claims.get("family_name")
25-
return user
26+
identity, _ = Identity.objects.get_or_create(user=user)
27+
if not identity.email:
28+
identity.email = claims.get("email")
29+
identity.first_name = claims.get("given_name")
30+
identity.last_name = claims.get("family_name")
31+
identity.save()
32+
user.save()
2633

2734

2835
def _read_private_key(keyfile):
@@ -88,8 +95,6 @@ def post(self, request):
8895
except UserModel.DoesNotExist:
8996
user = UserModel.objects.create_user(username=user_data["email"])
9097
_updateUser(user, user_data)
91-
user.save()
92-
9398
token = RefreshToken.for_user(user)
9499
return JsonResponse({"access": str(token.access_token), "refresh": str(token)})
95100

@@ -104,7 +109,6 @@ def authenticate_header(self, request):
104109
def create_user(self, claims):
105110
user = self.UserModel.objects.create_user(username=claims.get("email"))
106111
_updateUser(user, claims)
107-
user.save()
108112
return user
109113

110114
def update_user(self, user, claims):

0 commit comments

Comments
 (0)