Skip to content

Commit

Permalink
made JWT_TOKEN_CLAIMS_SERIALIZER setting value a callable string rath…
Browse files Browse the repository at this point in the history
…er than a function
  • Loading branch information
alichass authored and iMerica committed Jun 20, 2020
1 parent 0722ec4 commit 1dce781
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 15 deletions.
26 changes: 12 additions & 14 deletions dj_rest_auth/tests/test_api.py
Expand Up @@ -21,6 +21,16 @@
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
from jwt import decode as decode_jwt

class TESTTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# Add custom claims
token['name'] = user.username
token['email'] = user.email

return token


@override_settings(ROOT_URLCONF="tests.urls")
class APIBasicTests(TestsMixin, TestCase):
Expand Down Expand Up @@ -610,18 +620,6 @@ def test_blacklisting(self):
self.assertEqual(resp.status_code, 500)



class TESTTokenObtainPairSerializer(TokenObtainPairSerializer):
@classmethod
def get_token(cls, user):
token = super().get_token(user)
# Add custom claims
token['name'] = user.username
token['email'] = user.email

return token


@override_settings(REST_USE_JWT=True)
@override_settings(JWT_AUTH_COOKIE=None)
@override_settings(REST_FRAMEWORK=dict(
Expand All @@ -630,7 +628,7 @@ def get_token(cls, user):
]
))
@override_settings(REST_SESSION_LOGIN=False)
@override_settings(JWT_TOKEN_CLAIMS_SERIALIZER = TESTTokenObtainPairSerializer)
@override_settings(JWT_TOKEN_CLAIMS_SERIALIZER = 'tests.test_api.TESTTokenObtainPairSerializer')
def test_custom_jwt_claims(self):
payload = {
"username": self.USERNAME,
Expand All @@ -655,7 +653,7 @@ def test_custom_jwt_claims(self):
]
))
@override_settings(REST_SESSION_LOGIN=False)
@override_settings(JWT_TOKEN_CLAIMS_SERIALIZER = TESTTokenObtainPairSerializer)
@override_settings(JWT_TOKEN_CLAIMS_SERIALIZER = 'tests.test_api.TESTTokenObtainPairSerializer')
def test_custom_jwt_claims_cookie_w_authentication(self):
payload = {
"username": self.USERNAME,
Expand Down
2 changes: 1 addition & 1 deletion dj_rest_auth/utils.py
Expand Up @@ -21,7 +21,7 @@ def default_create_token(token_model, user, serializer):
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer

def jwt_encode(user):
TOPS = getattr(settings, 'JWT_TOKEN_CLAIMS_SERIALIZER', TokenObtainPairSerializer)
TOPS = import_callable(getattr(settings, 'JWT_TOKEN_CLAIMS_SERIALIZER', TokenObtainPairSerializer))
refresh = TOPS.get_token(user)
return refresh.access_token, refresh

Expand Down

0 comments on commit 1dce781

Please sign in to comment.