
    ([f                           G d  d          Z dS )c                   d    e Zd ZdZdZdddddZ	 	 ddZd Zed             Z		 	 dd
Z
	 	 ddZdS )BearerTokenGeneratora  Bearer token generator which can create the payload for token response
    by OAuth 2 server. A typical token response would be:

    .. code-block:: http

        HTTP/1.1 200 OK
        Content-Type: application/json;charset=UTF-8
        Cache-Control: no-store
        Pragma: no-cache

        {
            "access_token":"mF_9.B5f-4.1JqM",
            "token_type":"Bearer",
            "expires_in":3600,
            "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA"
        }
    i  i / )authorization_codeimplicitpasswordclient_credentialsNc                 0    || _         || _        || _        d S N)access_token_generatorrefresh_token_generatorexpires_generator)selfr
   r   r   s       P/var/www/piapp/venv/lib/python3.11/site-packages/authlib/oauth2/rfc6750/token.py__init__zBearerTokenGenerator.__init__   s"     '=#'>$!2    c                     | j         !| j                            || j                  }nTt	          | j                   r|                      ||          }n)t          | j         t                    r| j         }n| j        }|S r	   )r   GRANT_TYPES_EXPIRES_INgetDEFAULT_EXPIRES_INcallable
isinstanceint)r   client
grant_type
expires_ins       r   _get_expires_inz$BearerTokenGenerator._get_expires_in%   s    !)488D35 5JJd,-- 	1//
CCJJ.44 	1/JJ0Jr   c                 4    |r|                      |          }|S r	   )get_allowed_scope)r   scopes     r   r   z&BearerTokenGenerator.get_allowed_scope1   s"     	4,,U33Er   Tc                    |                      ||          }|                     ||||          }||                     ||          }d|d}|r||d<   |r#| j        r|                     ||||          |d<   |r||d<   |S )a  Generate a bearer token for OAuth 2.0 authorization token endpoint.

        :param client: the client that making the request.
        :param grant_type: current requested grant_type.
        :param user: current authorized user.
        :param expires_in: if provided, use this value as expires_in.
        :param scope: current requested scope.
        :param include_refresh_token: should refresh_token be included.
        :return: Token dict
        )r   r   userr   NBearer)
token_typeaccess_tokenr   refresh_tokenr   )r   r
   r   r   )	r   r   r   r    r   r   include_refresh_tokenr#   tokens	            r   generatezBearerTokenGenerator.generate7   s     &&vu5522jt5 3 J J--fjAAJ #(
 
  	-",E,  	NT%A 	N%)%A%A*4u &B &N &NE/" 	#"E'Nr   c                 6    |                      ||||||          S r	   )r'   )r   r   r   r    r   r   r%   s          r   __call__zBearerTokenGenerator.__call__V   s    }}ZujJ_```r   )NN)NNNT)__name__
__module____qualname____doc__r   r   r   r   staticmethodr   r'   r)    r   r   r   r      s         &  %$	  *.#'3 3 3 3
 
 
   \
 =A8<   > =A8<a a a a a ar   r   N)r   r/   r   r   <module>r0      sK   Wa Wa Wa Wa Wa Wa Wa Wa Wa War   