§
    (ê[f  ã                   óx   — d dl mZ ddlmZ ddlmZ  G d„ d¦  «        Z G d„ d¦  «        Z G d	„ d
¦  «        ZdS )é    )Údefault_json_headersé   )ÚOAuth2Request)ÚInvalidRequestErrorc                   óh   — e Zd ZdgZdZeZdefd„Ze	d„ ¦   «         Z
	 	 dd„Zd„ Zd	„ Zd
„ Zd„ Zd„ ZdS )Ú	BaseGrantÚclient_secret_basicNÚrequestc                 ó¶   — d | _         d | _        || _        || _        t	          ¦   «         t	          ¦   «         t	          ¦   «         t	          ¦   «         dœ| _        d S )N)Ú$after_validate_authorization_requestÚafter_validate_consent_requestÚafter_validate_token_requestÚprocess_token)ÚpromptÚredirect_urir
   ÚserverÚsetÚ_hooks)Úselfr
   r   s      úV/var/www/piapp/venv/lib/python3.11/site-packages/authlib/oauth2/rfc6749/grants/base.pyÚ__init__zBaseGrant.__init__   sM   € ØˆŒØ ˆÔØˆŒØˆŒå47±E´EÝ.1©e¬eÝ,/©E¬EÝ ™UœUð	
ð 
ˆŒˆˆó    c                 ó   — | j         j        S ©N)r
   Úclient©r   s    r   r   zBaseGrant.client   s   € àŒ|Ô"Ð"r   Tc                 óh   — |€| j         }| j                             | j        j        |||||¬¦  «        S )N)r   Ú
grant_typeÚuserÚscopeÚ
expires_inÚinclude_refresh_token)Ú
GRANT_TYPEr   Úgenerate_tokenr
   r   )r   r   r    r   r!   r"   s         r   r$   zBaseGrant.generate_token#   sE   € àÐØœˆJØŒ{×)Ò)Ø”<Ô&Ø!ØØØ!Ø"7ð *ñ 
ô 
ð 	
r   c                 óŠ   — | j                              | j        | j        ¦  «        }| j                              d|| ¬¦  «         |S )a  Authenticate client with the given methods for token endpoint.

        For example, the client makes the following HTTP request using TLS:

        .. code-block:: http

            POST /token HTTP/1.1
            Host: server.example.com
            Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
            Content-Type: application/x-www-form-urlencoded

            grant_type=authorization_code&code=SplxlOBeZQQYbYS6WxSbIA
            &redirect_uri=https%3A%2F%2Fclient%2Eexample%2Ecom%2Fcb

        Default available methods are: "none", "client_secret_basic" and
        "client_secret_post".

        :return: client
        Úafter_authenticate_client)r   Úgrant)r   Úauthenticate_clientr
   ÚTOKEN_ENDPOINT_AUTH_METHODSÚsend_signal)r   r   s     r   Ú"authenticate_token_endpoint_clientz,BaseGrant.authenticate_token_endpoint_client0   sS   € ð( ”×0Ò0ØŒL˜$Ô:ñ<ô <ˆàŒ×ÒØ'Ø ð 	 ñ 	'ô 	'ð 	'ð ˆr   c                 óB   — | j                              || j        ¦  «        S )z%A method to save token into database.)r   Ú
save_tokenr
   )r   Útokens     r   r-   zBaseGrant.save_tokenK   s   € àŒ{×%Ò% e¨T¬\Ñ:Ô:Ð:r   c                 óh   — | j         j        }| j         j        }| j                             ||¦  «        S )zAValidate if requested scope is supported by Authorization Server.)r
   r    Ústater   Úvalidate_requested_scope)r   r    r0   s      r   r1   z"BaseGrant.validate_requested_scopeO   s.   € à”Ô"ˆØ”Ô"ˆØŒ{×3Ò3°E¸5ÑAÔAÐAr   c                 ó„   — || j         vrt          d|| j         ¦  «        ‚| j         |                              |¦  «         d S )NzHook type %s is not in %s.)r   Ú
ValueErrorÚadd)r   Ú	hook_typeÚhooks      r   Úregister_hookzBaseGrant.register_hookU   sL   € Ø˜DœKÐ'Ð'ÝÐ9Ø&¨¬ñ5ô 5ð 5àŒ�IÔ×"Ò" 4Ñ(Ô(Ð(Ð(Ð(r   c                 ó>   — | j         |         D ]} || g|¢R i |¤Ž Œd S r   )r   )r   r5   ÚargsÚkwargsr6   s        r   Úexecute_hookzBaseGrant.execute_hook[   sE   € Ø”K 	Ô*ð 	(ð 	(ˆDØˆD�Ð'˜Ð'Ð'Ð' Ð'Ð'Ð'Ð'ð	(ð 	(r   )NNNNT)Ú__name__Ú
__module__Ú__qualname__r)   r#   r   ÚTOKEN_RESPONSE_HEADERr   r   Úpropertyr   r$   r+   r-   r1   r7   r;   © r   r   r   r      sÎ   € € € € € à#8Ð"9Ðð €Jð 1Ðð

 ð 

ð 

ð 

ð 

ð ð#ð #ñ „Xð#ð @DØ>Bð
ð 
ð 
ð 
ðð ð ð6;ð ;ð ;ðBð Bð Bð)ð )ð )ð(ð (ð (ð (ð (r   r   c                   ó@   — e Zd ZdgZdZedefd„¦   «         Zd„ Zd„ Z	dS )ÚTokenEndpointMixinÚPOSTNr
   c                 ó>   — |j         | j        k    o|j        | j        v S r   )r   r#   ÚmethodÚTOKEN_ENDPOINT_HTTP_METHODS©Úclsr
   s     r   Úcheck_token_endpointz'TokenEndpointMixin.check_token_endpointg   s(   € àÔ! S¤^Ò3ð AØŒ~ Ô!@Ð@ð	Ar   c                 ó   — t          ¦   «         ‚r   ©ÚNotImplementedErrorr   s    r   Úvalidate_token_requestz)TokenEndpointMixin.validate_token_requestl   ó   € Ý!Ñ#Ô#Ð#r   c                 ó   — t          ¦   «         ‚r   rL   r   s    r   Úcreate_token_responsez(TokenEndpointMixin.create_token_responseo   rO   r   )
r<   r=   r>   rG   r#   Úclassmethodr   rJ   rN   rQ   rA   r   r   rC   rC   `   sk   € € € € € à#) (Ðð €JàðA¨=ð Að Að Añ „[ðAð$ð $ð $ð$ð $ð $ð $ð $r   rC   c                   óv   — e Zd Z e¦   «         ZdZedefd„¦   «         Ze	defd„¦   «         Z
d„ Zd„ Zdefd„Zd	S )
ÚAuthorizationEndpointMixinFr
   c                 ó   — |j         | j        v S r   )Úresponse_typeÚRESPONSE_TYPESrH   s     r   Úcheck_authorization_endpointz7AuthorizationEndpointMixin.check_authorization_endpointw   s   € àÔ$¨Ô(:Ð:Ð:r   c                 óì   — | j         r@|                     | j         ¦  «        st          d| j         › d�| j        ¬¦  «        ‚| j         S |                     ¦   «         }|st          d| j        ¬¦  «        ‚|S )NzRedirect URI z is not supported by client.)r0   z"Missing "redirect_uri" in request.)r   Úcheck_redirect_urir   r0   Úget_default_redirect_uri)r
   r   r   s      r   Ú#validate_authorization_redirect_uriz>AuthorizationEndpointMixin.validate_authorization_redirect_uri{   sž   € àÔð 	 Ø×,Ò,¨WÔ-AÑBÔBð )Ý)ØV GÔ$8ÐVÐVÐVØ!œ-ð)ñ )ô )ð )ð Ô'Ð'à!×:Ò:Ñ<Ô<ˆLØð )Ý)Ø8Ø!œ-ð)ñ )ô )ð )ð  Ðr   c                 óh   — |                       ¦   «         }|                      d|¦  «         || _        d S )Nr   )Úvalidate_authorization_requestr;   r   )r   r   s     r   Úvalidate_consent_requestz3AuthorizationEndpointMixin.validate_consent_request‹   s8   € Ø×:Ò:Ñ<Ô<ˆØ×ÒÐ:¸LÑIÔIÐIØ(ˆÔÐÐr   c                 ó   — t          ¦   «         ‚r   rL   r   s    r   r^   z9AuthorizationEndpointMixin.validate_authorization_request�   rO   r   r   c                 ó   — t          ¦   «         ‚r   rL   )r   r   Ú
grant_users      r   Úcreate_authorization_responsez8AuthorizationEndpointMixin.create_authorization_response“   rO   r   N)r<   r=   r>   r   rW   ÚERROR_RESPONSE_FRAGMENTrR   r   rX   Ústaticmethodr\   r_   r^   Ústrrc   rA   r   r   rT   rT   s   sª   € € € € € Ø�S‘U”U€NØ#Ðàð;°=ð ;ð ;ð ;ñ „[ð;ð ð °]ð  ð  ð  ñ „\ð ð)ð )ð )ð
$ð $ð $ð$¸#ð $ð $ð $ð $ð $ð $r   rT   N)	Úauthlib.constsr   Úrequestsr   Úerrorsr   r   rC   rT   rA   r   r   ú<module>rj      sÆ   ðØ /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (ðW(ð W(ð W(ð W(ð W(ñ W(ô W(ð W(ðt$ð $ð $ð $ð $ñ $ô $ð $ð&!$ð !$ð !$ð !$ð !$ñ !$ô !$ð !$ð !$ð !$r   