1""" 
    2oauthlib.openid.connect.core.grant_types 
    3~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
    4""" 
    5import logging 
    6 
    7from oauthlib.oauth2.rfc6749.grant_types.refresh_token import ( 
    8    RefreshTokenGrant as OAuth2RefreshTokenGrant, 
    9) 
    10 
    11from .base import GrantTypeBase 
    12 
    13log = logging.getLogger(__name__) 
    14 
    15 
    16class RefreshTokenGrant(GrantTypeBase): 
    17 
    18    def __init__(self, request_validator=None, **kwargs): 
    19        self.proxy_target = OAuth2RefreshTokenGrant( 
    20            request_validator=request_validator, **kwargs) 
    21        self.register_token_modifier(self.add_id_token) 
    22 
    23    def add_id_token(self, token, token_handler, request): 
    24        """ 
    25        Construct an initial version of id_token, and let the 
    26        request_validator sign or encrypt it. 
    27 
    28        The authorization_code version of this method is used to 
    29        retrieve the nonce accordingly to the code storage. 
    30        """ 
    31        if not self.request_validator.refresh_id_token(request): 
    32            return token 
    33 
    34        return super().add_id_token(token, token_handler, request)