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.
- {dj_jwt_auth-1.6.0.dist-info → dj_jwt_auth-1.7.0.dist-info}/METADATA +2 -1
- {dj_jwt_auth-1.6.0.dist-info → dj_jwt_auth-1.7.0.dist-info}/RECORD +6 -6
- {dj_jwt_auth-1.6.0.dist-info → dj_jwt_auth-1.7.0.dist-info}/WHEEL +1 -1
- django_jwt/user.py +7 -7
- tests/test.py +3 -4
- {dj_jwt_auth-1.6.0.dist-info → dj_jwt_auth-1.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: dj-jwt-auth
|
|
3
|
-
Version: 1.
|
|
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=
|
|
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=
|
|
16
|
+
tests/test.py,sha256=K1woXGzeg9FJrjd4I22vm0-M43D8tXYV6XwXtv9vTD8,10192
|
|
17
17
|
tests/urls.py,sha256=D5FhDSVAudurkrpkCZZPnDvgXSgifwFVB3nAlYBg7uQ,212
|
|
18
|
-
dj_jwt_auth-1.
|
|
19
|
-
dj_jwt_auth-1.
|
|
20
|
-
dj_jwt_auth-1.
|
|
21
|
-
dj_jwt_auth-1.
|
|
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,,
|
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 =
|
|
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 =
|
|
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
|
-
|
|
65
|
-
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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)
|
|
File without changes
|