@@ -288,22 +288,16 @@ def get_sid_by_sub_and_client_id(self, sub, client_id):
288288 return sid
289289 return None
290290
291- def replace_token (self , sid , sinfo , token_type ):
291+ def replace_refresh_token (self , sid , sinfo ):
292292 """
293293 Replace an old refresh_token with a new one
294294
295295 :param sid: session ID
296296 :param sinfo: session info
297- :param token_type: What type of tokens should be replaced
298297 :return: Updated session info
299298 """
300-
301- if token_type in self .handler :
302- refresh_token = self .handler [token_type ](sid , sinfo = sinfo )
303- # blacklist the old
304- self .revoke_token (sid , token_type , sinfo )
305-
306- sinfo [token_type ] = refresh_token
299+ refresh_token = self .handler ["refresh_token" ](sid , sinfo = sinfo )
300+ sinfo ["refresh_token" ] = refresh_token
307301 return sinfo
308302
309303 def _make_at (self , sid , session_info , aud = None , client_id_aud = True ):
@@ -368,8 +362,8 @@ def upgrade_to_token(
368362 session_info ["expires_at" ] = self .handler [
369363 "access_token" ].lifetime + utc_time_sans_frac ()
370364
371- if issue_refresh :
372- session_info = self .replace_token (key , session_info , "refresh_token" )
365+ if issue_refresh and "refresh_token" in self . handler :
366+ session_info = self .replace_refresh_token (key , session_info )
373367
374368 self [key ] = session_info
375369 return session_info
@@ -391,15 +385,16 @@ def refresh_token(self, token, new_refresh=False):
391385
392386 _sid = _tinfo ["sid" ]
393387 session_info = self [_sid ]
388+ if token != session_info .get ("refresh_token" ):
389+ raise UnknownToken ()
394390 if is_expired (int (_tinfo ["exp" ])):
395391 raise ExpiredToken ()
396392
397- session_info = self .replace_token (_sid , session_info , "access_token" )
398-
393+ session_info ["access_token" ] = self ._make_at (_sid , session_info )
399394 session_info ["token_type" ] = self .handler ["access_token" ].token_type
400395
401396 if new_refresh :
402- session_info = self .replace_token (_sid , session_info , "refresh_token" )
397+ session_info = self .replace_refresh_token (_sid , session_info )
403398
404399 self [_sid ] = session_info
405400 return session_info
0 commit comments