dj-jwt-auth 1.6.0__py3-none-any.whl → 1.7.0__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.6.0
3
+ Version: 1.7.0
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
@@ -17,6 +17,7 @@ Classifier: Programming Language :: Python :: 3 :: Only
17
17
  Classifier: Programming Language :: Python :: 3.9
18
18
  Classifier: Programming Language :: Python :: 3.10
19
19
  Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
20
21
  Classifier: Topic :: Internet :: WWW/HTTP
21
22
  Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
22
23
  Requires-Python: >=3.8
@@ -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=leJyZbeY1gfZyIy10qypVDD-zuU3elUQD4w0ijWTYak,5771
9
+ django_jwt/user.py,sha256=e1OizNlxUQjH2jwbbFxHN0go0pJiVrmLJUDP7lBuUUM,5859
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
15
  tests/models.py,sha256=tJlhRARVGfFIH6Gp1o00buZKcY2oAk7HNw2PMnkTEDs,295
16
- tests/test.py,sha256=782KtcjRTfbBi_va69bBmS1TWFa9ReBVj2wKfGr4Rvo,10199
16
+ tests/test.py,sha256=K1woXGzeg9FJrjd4I22vm0-M43D8tXYV6XwXtv9vTD8,10192
17
17
  tests/urls.py,sha256=D5FhDSVAudurkrpkCZZPnDvgXSgifwFVB3nAlYBg7uQ,212
18
- dj_jwt_auth-1.6.0.dist-info/METADATA,sha256=Pjkw3ckU170djJ-OgthwLk_vLeW-9uAhzmy7MJbrh5c,4365
19
- dj_jwt_auth-1.6.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
20
- dj_jwt_auth-1.6.0.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
21
- dj_jwt_auth-1.6.0.dist-info/RECORD,,
18
+ dj_jwt_auth-1.7.0.dist-info/METADATA,sha256=k4Aal9v4cYy-3GQaVekI9EQE9qZ_MSTCwu0heRpNOBw,4416
19
+ dj_jwt_auth-1.7.0.dist-info/WHEEL,sha256=R06PA3UVYHThwHvxuRWMqaGcr-PuniXahwjmQRFMEkY,91
20
+ dj_jwt_auth-1.7.0.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
21
+ dj_jwt_auth-1.7.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.44.0)
2
+ Generator: setuptools (75.5.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
django_jwt/user.py CHANGED
@@ -1,8 +1,7 @@
1
- from datetime import datetime
1
+ from datetime import datetime, timezone
2
2
  from functools import cache
3
3
  from logging import getLogger
4
4
 
5
- import pytz
6
5
  from django.contrib.auth import get_user_model
7
6
  from django.contrib.auth.models import Group, Permission
8
7
  from django.http.request import HttpRequest
@@ -10,7 +9,7 @@ from django.http.request import HttpRequest
10
9
  from django_jwt import settings
11
10
  from django_jwt.utils import oidc_handler
12
11
 
13
- utc = pytz.UTC
12
+ utc = timezone.utc
14
13
  log = getLogger(__name__)
15
14
 
16
15
  model = get_user_model()
@@ -32,7 +31,7 @@ class UserHandler:
32
31
 
33
32
  modified_at = payload.get(settings.OIDC_TOKEN_MODIFIED_FIELD, None)
34
33
  if modified_at and isinstance(modified_at, int):
35
- self.modified_at = utc.localize(datetime.fromtimestamp(modified_at))
34
+ self.modified_at = datetime.fromtimestamp(modified_at, utc)
36
35
 
37
36
  self.on_create = settings.OIDC_USER_ON_CREATE
38
37
  self.on_update = settings.OIDC_USER_ON_UPDATE
@@ -61,8 +60,9 @@ class UserHandler:
61
60
  def _create_new_user(self) -> model:
62
61
  """Create new user if user is not found in database even by email."""
63
62
 
64
- user = model.objects.create(**self.kwargs)
65
- if self.on_create:
63
+ email = self.kwargs.pop("email")
64
+ user, created = model.objects.get_or_create(email=email, defaults=self.kwargs)
65
+ if created and self.on_create:
66
66
  self.on_create(user, self.request, self.payload)
67
67
  return user
68
68
 
@@ -81,7 +81,7 @@ class UserHandler:
81
81
  user_modified_at = getattr(user, settings.OIDC_USER_MODIFIED_FIELD, None)
82
82
  if user_modified_at:
83
83
  if not user_modified_at.tzinfo:
84
- user_modified_at = utc.localize(user_modified_at)
84
+ user_modified_at = user_modified_at.replace(tzinfo=utc)
85
85
  is_modified = user_modified_at < self.modified_at
86
86
 
87
87
  log.info(
tests/test.py CHANGED
@@ -1,8 +1,7 @@
1
- from datetime import datetime
1
+ from datetime import datetime, timezone
2
2
  from http import HTTPStatus
3
3
  from unittest.mock import Mock, patch
4
4
 
5
- import pytz
6
5
  from django.contrib.auth import get_user_model
7
6
  from django.contrib.auth.models import Group, Permission
8
7
  from django.test import TestCase
@@ -14,7 +13,7 @@ from django_jwt.middleware import JWTAuthMiddleware
14
13
  from django_jwt.roles import ROLE
15
14
  from django_jwt.user import role_handler
16
15
 
17
- utc = pytz.UTC
16
+ utc = timezone.utc
18
17
  access_token_payload = {
19
18
  "sub": "1234",
20
19
  "updated_at": 2687276498,
@@ -185,7 +184,7 @@ class OIDCHandlerTest(TestCase):
185
184
  - don't call userdata if updated_at is not changed
186
185
  """
187
186
 
188
- updated_at = utc.localize(datetime.fromtimestamp(access_token_payload["updated_at"]))
187
+ updated_at = datetime.fromtimestamp(access_token_payload["updated_at"], utc)
189
188
  user = User.objects.create(kc_id="1234", first_name="", last_name="", username="")
190
189
 
191
190
  self.middleware.process_request(self.request)