Skip to content

Commit ffac9ac

Browse files
committed
Partial fix for drf-jwt deprecation
1 parent e7bf57c commit ffac9ac

File tree

2 files changed

+18
-5
lines changed

2 files changed

+18
-5
lines changed

src/apps/a12n/jwt.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,32 @@
1+
from datetime import UTC, datetime
2+
13
import jwt
4+
from django.conf import settings
25
from django.utils.translation import gettext_lazy as _
36
from drf_spectacular.contrib.rest_framework_jwt import JWTScheme
47
from rest_framework.exceptions import AuthenticationFailed
58
from rest_framework.request import Request
69
from rest_framework_jwt.authentication import JSONWebTokenAuthentication
7-
from rest_framework_jwt.utils import jwt_create_payload
810

911
from apps.a12n.models import JWTBlacklist
1012
from apps.users.models import User
1113

1214

13-
def payload_handler(user: User) -> dict:
14-
"""Add app-wide payload to generated JWT's"""
15+
def create_jwt_payload(user: User) -> dict:
16+
"""App-wide JWT payload.
17+
18+
original function is at https://github.com/Styria-Digital/django-rest-framework-jwt/blob/master/src/rest_framework_jwt/utils.py#L59
19+
"""
20+
21+
issued_at = datetime.now(tz=UTC)
22+
1523
return {
16-
**jwt_create_payload(user),
24+
"username": user.get_username(),
25+
"iat": issued_at.timestamp(),
26+
"exp": issued_at + settings.JWT_AUTH["JWT_EXPIRATION_DELTA"],
27+
"orig_iat": issued_at.timestamp(),
28+
"iss": settings.JWT_AUTH["JWT_ISSUER"],
29+
"user_id": user.pk,
1730
"user_public_id": user.uuid,
1831
}
1932

src/core/conf/auth.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
"JWT_ALGORITHM": "RS256",
5555
"JWT_PRIVATE_KEY": keys["private"],
5656
"JWT_PUBLIC_KEY": keys["public"],
57-
"JWT_PAYLOAD_HANDLER": "apps.a12n.jwt.payload_handler",
57+
"JWT_PAYLOAD_HANDLER": "apps.a12n.jwt.create_jwt_payload",
5858
}
5959

6060
DANGEROUSLY_MAKE_ONE_TIME_PASSWORDLESS_TOKEN_MULTI_PASS = env("DANGEROUSLY_MAKE_ONE_TIME_PASSWORDLESS_TOKEN_MULTI_PASS", cast=bool, default=False)

0 commit comments

Comments
 (0)