11
11
from django .views .decorators .csrf import csrf_exempt
12
12
from django .http import JsonResponse
13
13
from django .contrib .auth import get_user_model
14
+ from api .models import Identity
14
15
15
16
UserModel = get_user_model ()
16
17
@@ -22,7 +23,13 @@ def _updateUser(user, claims):
22
23
user .email = claims .get ("email" )
23
24
user .first_name = claims .get ("given_name" )
24
25
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 ()
26
33
27
34
28
35
def _read_private_key (keyfile ):
@@ -88,8 +95,6 @@ def post(self, request):
88
95
except UserModel .DoesNotExist :
89
96
user = UserModel .objects .create_user (username = user_data ["email" ])
90
97
_updateUser (user , user_data )
91
- user .save ()
92
-
93
98
token = RefreshToken .for_user (user )
94
99
return JsonResponse ({"access" : str (token .access_token ), "refresh" : str (token )})
95
100
@@ -104,7 +109,6 @@ def authenticate_header(self, request):
104
109
def create_user (self , claims ):
105
110
user = self .UserModel .objects .create_user (username = claims .get ("email" ))
106
111
_updateUser (user , claims )
107
- user .save ()
108
112
return user
109
113
110
114
def update_user (self , user , claims ):
0 commit comments