|
15 | 15 | from django.core.exceptions import ObjectDoesNotExist
|
16 | 16 | from rest_framework.response import Response
|
17 | 17 | from .social_auth.aws_cognito import decode_token
|
18 |
| - |
| 18 | +from .models import Idp |
19 | 19 |
|
20 | 20 | def add_custom_token_claims(token, user):
|
21 | 21 | """Append custom token claims specified using settings."""
|
@@ -145,15 +145,19 @@ def validate(self, attrs):
|
145 | 145 | if id_token.get('email_verified') is False:
|
146 | 146 | raise APIException("Email not verified.")
|
147 | 147 |
|
| 148 | + user_defaults = { |
| 149 | + "username": id_token["cognito:username"], |
| 150 | + "first_name": id_token.get("given_name"), |
| 151 | + "last_name": id_token.get("family_name"), |
| 152 | + } |
| 153 | + |
| 154 | + if rest_microservice_settings.USER_MODEL_UUID_FIELD is not None: |
| 155 | + user_defaults[rest_microservice_settings.USER_MODEL_UUID_FIELD] = id_token['sub'] |
| 156 | + |
| 157 | + user, created = get_user_model().objects.get_or_create(email=id_token["email"], defaults=user_defaults) |
148 | 158 |
|
149 |
| - user, created = get_user_model().objects.get_or_create( |
150 |
| - email=id_token["email"], |
151 |
| - defaults={ |
152 |
| - "id": id_token['sub'], |
153 |
| - "username": id_token["cognito:username"], |
154 |
| - "first_name": id_token.get("given_name"), |
155 |
| - "last_name": id_token.get("family_name"), |
156 |
| - }) |
| 159 | + if rest_microservice_settings.USER_MODEL_UUID_FIELD is None: |
| 160 | + Idp.objects.update_or_create(user=user, defaults={"uuid": id_token['sub']}) |
157 | 161 |
|
158 | 162 | refresh = self.get_token(user)
|
159 | 163 | data = {
|
|
0 commit comments