Skip to content

Commit e105c6c

Browse files
committed
Fix (and test) user_identity_loader with refresh tokens
refs #27
1 parent 81c1549 commit e105c6c

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

flask_jwt_extended/utils.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,7 @@ def create_refresh_token(identity):
333333
refresh_expire_delta = get_refresh_expires()
334334
algorithm = get_algorithm()
335335
secret = _get_secret_key()
336+
identity = current_app.jwt_manager._user_identity_callback(identity)
336337

337338
# Actually make the tokens
338339
refresh_token = _encode_refresh_token(identity, secret, algorithm,

tests/test_jwt_encode_decode.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from flask import Flask
77
from flask_jwt_extended.exceptions import JWTEncodeError, JWTDecodeError
88
from flask_jwt_extended.utils import _encode_access_token, _encode_refresh_token, \
9-
_decode_jwt, create_access_token
9+
_decode_jwt, create_access_token, create_refresh_token
1010
from flask_jwt_extended.jwt_manager import JWTManager
1111

1212

@@ -302,7 +302,7 @@ def test_decode_invalid_jwt(self):
302302
encoded_token = jwt.encode(token_data, 'secret', 'HS256').decode('utf-8')
303303
_decode_jwt(encoded_token, 'secret', 'HS256')
304304

305-
def test_create_access_token_with_object(self):
305+
def test_create_jwt_with_object(self):
306306
# Complex object to test building a JWT from. Normally if you are using
307307
# this functionality, this is something that would be retrieved from
308308
# disk somewhere (think sqlalchemy)
@@ -330,9 +330,14 @@ def user_identity_lookup(user):
330330
# Create the token using the complex object
331331
with app.test_request_context():
332332
user = TestUser(username='foo', roles=['bar', 'baz'])
333-
token = create_access_token(identity=user)
334-
335-
# Decode the token and make sure the values are set properly
336-
token_data = _decode_jwt(token, app.secret_key, app.config['JWT_ALGORITHM'])
337-
self.assertEqual(token_data['identity'], 'foo')
338-
self.assertEqual(token_data['user_claims']['roles'], ['bar', 'baz'])
333+
access_token = create_access_token(identity=user)
334+
refresh_token = create_refresh_token(identity=user)
335+
336+
# Decode the tokens and make sure the values are set properly
337+
access_token_data = _decode_jwt(access_token, app.secret_key,
338+
app.config['JWT_ALGORITHM'])
339+
refresh_token_data = _decode_jwt(refresh_token, app.secret_key,
340+
app.config['JWT_ALGORITHM'])
341+
self.assertEqual(access_token_data['identity'], 'foo')
342+
self.assertEqual(access_token_data['user_claims']['roles'], ['bar', 'baz'])
343+
self.assertEqual(refresh_token_data['identity'], 'foo')

0 commit comments

Comments
 (0)