dj-jwt-auth 1.3.1__py3-none-any.whl → 1.4.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.3.1
3
+ Version: 1.4.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
@@ -69,6 +69,7 @@ User retated variables:
69
69
  - OIDC_USER_MODIFIED_FIELD - user model field to store last modified date, by default `modified_timestamp`
70
70
  - OIDC_TOKEN_MODIFIED_FIELD - access token field to store last modified date, by default `updated_at`
71
71
  - OIDC_USER_UID - User model" unique identifier, by default `kc_id`
72
+ - OIDC_TOKEN_USER_UID - access token field to store user UID, by default `sub`
72
73
  - OIDC_USER_MAPPING - mapping between JWT claims and user model fields, by default:
73
74
  ```
74
75
  OIDC_USER_MAPPING = {
@@ -4,16 +4,16 @@ django_jwt/exceptions.py,sha256=vFJcGOCSZvxJRbSeMgWgPUM9wcXu6CSHblpwMzhV-Ic,198
4
4
  django_jwt/middleware.py,sha256=4PiF0-v13aLjvTyeyumQqYFimb6gCDHBgm6KooPGZdM,1176
5
5
  django_jwt/pkce.py,sha256=HYIQI0vKSmQkYIqTj3cciIT01ldkjhqlYiXkYcnNSGc,711
6
6
  django_jwt/roles.py,sha256=SaHK3o8T8USS4ZhG4SrHPlZQV2lMb2t1UZHT6IQtBvA,143
7
- django_jwt/settings.py,sha256=HnuHNoM3H5sGfDRc9hvXZDa9iTyleMNrN9Ted5KmFRk,1474
7
+ django_jwt/settings.py,sha256=NhA0froKOtkAD4QeO1TpEHdEPY-7z85wue9ceA8-sJ4,1552
8
8
  django_jwt/urls.py,sha256=OoKbJ2kf41tuDBnVjK5TTW4aVt9bhRaz59HFlUOAins,251
9
- django_jwt/user.py,sha256=_ZZdfAFdQeScMmWwkrzo-5XjTKMVCbmfK4FPpiCbaQQ,5021
9
+ django_jwt/user.py,sha256=dTsB95TBgbqZLKMjKPSl9MiXgrJkdEyayh6f211wbwI,4930
10
10
  django_jwt/utils.py,sha256=Gz8cH0cD3y_cvW8FwRoCFgShBrYvcB7XBF0GWx0n2qQ,1485
11
11
  django_jwt/views.py,sha256=Mwcd70Qrp5aeZYgXWBMzkm8DD01Tf1nAVlfq6wIlhQY,3705
12
12
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  tests/models.py,sha256=K5e0QCgyZeLLHS6i3KRMQHooql47g7qqni7f9tKQrIY,251
14
- tests/test.py,sha256=uZz9eG1nC1CljITD6K79Ruodtr8SDPEnBSt_5GOLVSc,7460
14
+ tests/test.py,sha256=OzfDEIgbDZvCinV_terIYEYjq7vPvhQQIqa0qgQNtxo,7405
15
15
  tests/urls.py,sha256=D5FhDSVAudurkrpkCZZPnDvgXSgifwFVB3nAlYBg7uQ,212
16
- dj_jwt_auth-1.3.1.dist-info/METADATA,sha256=EurjeCr-WQKFOZcAmjOs2p7Q7afp0KTWXfGQUK_0U04,3994
17
- dj_jwt_auth-1.3.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
18
- dj_jwt_auth-1.3.1.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
19
- dj_jwt_auth-1.3.1.dist-info/RECORD,,
16
+ dj_jwt_auth-1.4.0.dist-info/METADATA,sha256=Qhd171r14xnZhnRUCktDQJFQMjQ_wuA8ZnabpkxG7K8,4073
17
+ dj_jwt_auth-1.4.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
18
+ dj_jwt_auth-1.4.0.dist-info/top_level.txt,sha256=58O7TdK-yECZcbmPc52KNlBFpjIUlENuZubCxaSOxus,17
19
+ dj_jwt_auth-1.4.0.dist-info/RECORD,,
django_jwt/settings.py CHANGED
@@ -8,6 +8,7 @@ OIDC_CONFIG_URL = getattr(settings, "OIDC_CONFIG_URL", None)
8
8
  OIDC_USER_UPDATE = getattr(settings, "OIDC_USER_UPDATE", True)
9
9
  OIDC_USER_MODIFIED_FIELD = getattr(settings, "OIDC_USER_MODIFIED_FIELD", "modified_timestamp")
10
10
  OIDC_TOKEN_MODIFIED_FIELD = getattr(settings, "OIDC_TOKEN_MODIFIED_FIELD", "updated_at")
11
+ OIDC_TOKEN_USER_UID = getattr(settings, "OIDC_TOKEN_USER_UID", "sub")
11
12
  OIDC_USER_UID = getattr(settings, "OIDC_USER_UID", "kc_id")
12
13
  OIDC_USER_MAPPING = getattr(
13
14
  settings,
@@ -38,7 +39,7 @@ OIDC_USER_ON_UPDATE = getattr(
38
39
 
39
40
  OIDC_CONFIG_ROUTES = getattr(settings, "OIDC_CONFIG_ROUTES", None)
40
41
  OIDC_ADMIN_ISSUER = getattr(settings, "OIDC_ADMIN_ISSUER", None)
41
- OIDC_ADMIN_CLIENT_ID = getattr(settings, "OIDC_ADMIN_CLIENT_ID", "complete-anatomy")
42
+ OIDC_ADMIN_CLIENT_ID = getattr(settings, "OIDC_ADMIN_CLIENT_ID", "cs-completeanatomy-admin")
42
43
  OIDC_ADMIN_SCOPE = getattr(settings, "OIDC_ADMIN_SCOPE", "openid")
43
44
  OIDC_ADMIN_ROLES = getattr(settings, "OIDC_ADMIN_ROLES", [])
44
45
 
django_jwt/user.py CHANGED
@@ -21,9 +21,8 @@ class UserHandler:
21
21
 
22
22
  def __init__(self, payload: dict, request: HttpRequest, access_token: str):
23
23
  # payload of access token without user info
24
- # auth0_id should be available if auth0 added in Client Scopes in KeyCloak admin
25
24
  self.kwargs = settings.OIDC_USER_DEFAULTS.copy()
26
- self.kwargs[settings.OIDC_USER_UID] = payload.get("auth0_id", payload["sub"])
25
+ self.kwargs[settings.OIDC_USER_UID] = payload[settings.OIDC_TOKEN_USER_UID]
27
26
 
28
27
  modified_at = payload.get(settings.OIDC_TOKEN_MODIFIED_FIELD, None)
29
28
  if modified_at and isinstance(modified_at, int):
tests/test.py CHANGED
@@ -13,13 +13,11 @@ from django_jwt.user import role_handler
13
13
  from django_jwt.roles import ROLE
14
14
 
15
15
  access_token_payload = {
16
- "sub": "12345",
17
- "auth0_id": "1234",
16
+ "sub": "1234",
18
17
  "updated_at": 2687276498,
19
18
  }
20
19
  user_info_payload = {
21
- "sub": "12345",
22
- "auth0_id": "1234",
20
+ "sub": "1234",
23
21
  "email": "example@bk.com",
24
22
  "name": "UserName",
25
23
  "given_name": "1st name",
@@ -51,7 +49,7 @@ class OIDCHandlerTest(TestCase):
51
49
  self.assertEqual(self.request.user.last_name, user_info_payload["family_name"])
52
50
  self.assertEqual(self.request.user.username, user_info_payload["name"])
53
51
  self.assertEqual(self.request.user.email, user_info_payload["email"])
54
- self.assertEqual(self.request.user.kc_id, user_info_payload["auth0_id"])
52
+ self.assertEqual(self.request.user.kc_id, user_info_payload["sub"])
55
53
 
56
54
  def test_keycloak_new_user(self, *_):
57
55
  """User is created if it doesn't exist in database"""