dj-jwt-auth 1.5.10__py3-none-any.whl → 1.5.11__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: dj-jwt-auth
3
- Version: 1.5.10
3
+ Version: 1.5.11
4
4
  Summary: A Django package for JSON Web Token validation and verification. Using PyJWT.
5
5
  Home-page: https://www.example.com/
6
6
  Author: Konstantin Seleznev
@@ -6,16 +6,16 @@ django_jwt/pkce.py,sha256=j-v2ffCw0X3JW7ak8vfNeSZI-dACOvHbi1eLmJ0R8gM,685
6
6
  django_jwt/roles.py,sha256=SaHK3o8T8USS4ZhG4SrHPlZQV2lMb2t1UZHT6IQtBvA,143
7
7
  django_jwt/settings.py,sha256=pXQ8WUU4LGBe6PQxCLTLM_2_b1CCSgehqim3yJDqZdw,1922
8
8
  django_jwt/urls.py,sha256=ZhcnRcQ1MBRh-bS7fTa-Vkz8yuWUhv-G_uRXKLnKAs0,320
9
- django_jwt/user.py,sha256=B5kufN5dcDe0tlmnBgYnfz7PaE-ncqujtCqQiDYZWak,5564
9
+ django_jwt/user.py,sha256=HPxVALN3wpBhkJLnUfQKjgShK9j9BvFv3F0dfrqN7Cc,5750
10
10
  django_jwt/utils.py,sha256=uIFw1JMldE_blC7YkaZbY7rpcawP2E6zsdLyuZRwJoA,1645
11
11
  django_jwt/views.py,sha256=jQW3YrW-Oed54KqxjDMaBOQ-dxEnqTAcBEXlQSK-zCE,4231
12
12
  django_jwt/templates/django-jwt-index.html,sha256=y8f0v2WbRAFxnIU799I_MZCVsjn1sbdh7bypjdWB0lA,1353
13
13
  django_jwt/templates/admin/login.html,sha256=Nihyu0IGvDDZVvQDITXozwlj6XCQ0B8gqlyHLqVNyJc,275
14
14
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- tests/models.py,sha256=4uonwXuAvJGlITpuxFazyoeA_CSUYMyN7Vj1gEWJTH4,308
16
- tests/test.py,sha256=nD1sm_nH0l9ADnwavySPdhgrNOvLX7nLYol7w306TFU,9720
15
+ tests/models.py,sha256=tJlhRARVGfFIH6Gp1o00buZKcY2oAk7HNw2PMnkTEDs,295
16
+ tests/test.py,sha256=KnliWfuW8CtRH4qkQ1SNT0jmfFSNZ6MJCWYz4OUv6pU,10175
17
17
  tests/urls.py,sha256=D5FhDSVAudurkrpkCZZPnDvgXSgifwFVB3nAlYBg7uQ,212
18
- dj_jwt_auth-1.5.10.dist-info/METADATA,sha256=yp09WYeetYvOR8oWck18DPT3SIVs1IXkg7UH684518U,4370
19
- dj_jwt_auth-1.5.10.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
20
- dj_jwt_auth-1.5.10.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
21
- dj_jwt_auth-1.5.10.dist-info/RECORD,,
18
+ dj_jwt_auth-1.5.11.dist-info/METADATA,sha256=9_9XVtcrl9rOEhb5E9VOYuEJ5ZS9tc8bxMdWeoeYrUs,4370
19
+ dj_jwt_auth-1.5.11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
20
+ dj_jwt_auth-1.5.11.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
21
+ dj_jwt_auth-1.5.11.dist-info/RECORD,,
django_jwt/user.py CHANGED
@@ -43,7 +43,7 @@ class UserHandler:
43
43
  """Collect user data from KeyCloak"""
44
44
 
45
45
  user_data = oidc_handler.get_user_info(self.access_token)
46
- log.info(f"User data: {user_data}, access_token: {self.access_token}")
46
+ log.info(f"[OIDC] User data: {user_data}")
47
47
  self.kwargs["email"] = user_data["email"].lower()
48
48
  self.kwargs.update(mapper(user_data))
49
49
 
@@ -85,7 +85,7 @@ class UserHandler:
85
85
  is_modified = user_modified_at < self.modified_at
86
86
 
87
87
  log.info(
88
- f"User modified at: {user_modified_at}, "
88
+ f"[OIDC] User modified at: {user_modified_at}, "
89
89
  f"modified_at: {self.modified_at}, "
90
90
  f"is_modified: {is_modified}, "
91
91
  f"email: {user.email}",
@@ -113,6 +113,9 @@ class UserHandler:
113
113
  return self._get_by_email()
114
114
  except model.DoesNotExist:
115
115
  return self._create_new_user()
116
+ except model.MultipleObjectsReturned:
117
+ log.error(f"[OIDC] Multiple users found by {settings.OIDC_USER_UID}: {self.kwargs[settings.OIDC_USER_UID]}")
118
+ return self._get_by_email()
116
119
 
117
120
 
118
121
  class RoleHandler:
tests/models.py CHANGED
@@ -4,5 +4,5 @@ from django.utils import timezone
4
4
 
5
5
 
6
6
  class User(AbstractUser):
7
- kc_id = models.CharField(max_length=255, unique=True, null=True, blank=True)
7
+ kc_id = models.CharField(max_length=255, null=True, blank=True)
8
8
  modified_timestamp = models.DateTimeField(auto_now=False, default=timezone.now)
tests/test.py CHANGED
@@ -112,6 +112,16 @@ class OIDCHandlerTest(TestCase):
112
112
  # fields are updated if they are changed in KeyCloak
113
113
  self.assertUserWithPayload()
114
114
 
115
+ def test_exists_multiple_kc_id(self, *_):
116
+ """User exists in database by email"""
117
+ user = User.objects.create(email="example@bk.com", kc_id="123")
118
+ User.objects.create(email="example@gmail.com", kc_id="123", username="other")
119
+ self.middleware.process_request(self.request)
120
+ self.assertEqual(self.request.user, user)
121
+
122
+ # fields are updated if they are changed in KeyCloak
123
+ self.assertUserWithPayload()
124
+
115
125
  def test_exists_email_differeent_kc_id_user(self, *_):
116
126
  """User exists in database by email but different kc_id"""
117
127
  user = User.objects.create(email="example@bk.com", kc_id="123")