§
    iÝ[f›  ã                   ó–   — d dl Z d dlmZ d dlmZ d dlmZ d dlmZm	Z
 d dlmZ d dlmZ  e j        e¦  «        Z G d„ d	e
¦  «        Z	dS )
é    N)Úimport_string)ÚResponse)Úrequest)ÚOAuth1RequestÚAuthorizationServer©Úgenerate_token)Ú
url_encodec                   óˆ   ‡ — e Zd ZdZdd„Zdd„Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zd„ Zd„ Zd„ Zdˆ fd„	Zdˆ fd„	Zd„ Zd„ Zˆ xZS )r   ax  Flask implementation of :class:`authlib.rfc5849.AuthorizationServer`.
    Initialize it with Flask app instance, client model class and cache::

        server = AuthorizationServer(app=app, query_client=query_client)
        # or initialize lazily
        server = AuthorizationServer()
        server.init_app(app, query_client=query_client)

    :param app: A Flask app instance
    :param query_client: A function to get client by client_id. The client
        model class MUST implement the methods described by
        :class:`~authlib.oauth1.rfc5849.ClientMixin`.
    :param token_generator: A function to generate token
    Nc                 ó~   — || _         || _        || _        d d d d d d dœ| _        |�|                      |¦  «         d S d S )N)Úexists_nonceÚcreate_temporary_credentialÚget_temporary_credentialÚdelete_temporary_credentialÚcreate_authorization_verifierÚcreate_token_credential)ÚappÚquery_clientÚtoken_generatorÚ_hooksÚinit_app)Úselfr   r   r   s       új/var/www/piapp/venv/lib/python3.11/site-packages/authlib/integrations/flask_oauth1/authorization_server.pyÚ__init__zAuthorizationServer.__init__   sa   € ØˆŒØ(ˆÔØ.ˆÔð !Ø+/Ø(,Ø+/Ø-1Ø'+ð
ð 
ˆŒð ˆ?Ø�MŠM˜#ÑÔÐÐÐð ˆ?ó    c                 óø   — |�|| _         |�|| _        | j        €|                      |¦  «        | _        |j                             d¦  «        }|r#t          |t          t          f¦  «        r|| _        || _	        d S )NÚ"OAUTH1_SUPPORTED_SIGNATURE_METHODS)
r   r   Úcreate_token_generatorÚconfigÚgetÚ
isinstanceÚlistÚtupleÚSUPPORTED_SIGNATURE_METHODSr   )r   r   r   r   Úmethodss        r   r   zAuthorizationServer.init_app/   s�   € ØÐ#Ø ,ˆDÔØÐ&Ø#2ˆDÔ àÔÐ'Ø#'×#>Ò#>¸sÑ#CÔ#CˆDÔ à”*—.’.Ð!EÑFÔFˆØð 	7•z '­Dµ%¨=Ñ9Ô9ð 	7Ø/6ˆDÔ,àˆŒˆˆr   c                 óJ   — || j         vrt          d¦  «        ‚|| j         |<   d S )NzInvalid "name" of hook)r   Ú
ValueError)r   ÚnameÚfuncs      r   Úregister_hookz!AuthorizationServer.register_hook>   s0   € Ø�t”{Ð"Ð"ÝÐ5Ñ6Ô6Ð6Ø ˆŒ�DÑÐÐr   c                 ó”  ‡‡‡— |j                              d¦  «        Št          ‰t          ¦  «        rt	          ‰¦  «        Šn |j                              dd¦  «        Šˆfd„Š|j                              d¦  «        Št          ‰t          ¦  «        rt	          ‰¦  «        Šn |j                              dd¦  «        Šˆfd„Šˆˆfd	„}|S )
NÚOAUTH1_TOKEN_GENERATORÚOAUTH1_TOKEN_LENGTHé*   c                  ó"   •— t          ‰ ¦  «        S ©Nr   ©Úlengths   €r   r   zCAuthorizationServer.create_token_generator.<locals>.token_generatorK   ó   ø€ Ý% fÑ-Ô-Ð-r   ÚOAUTH1_TOKEN_SECRET_GENERATORÚOAUTH1_TOKEN_SECRET_LENGTHé0   c                  ó"   •— t          ‰ ¦  «        S r0   r   r1   s   €r   Úsecret_generatorzDAuthorizationServer.create_token_generator.<locals>.secret_generatorT   r3   r   c                  ó.   •—  ‰¦   «          ‰ ¦   «         dœS )N)Úoauth_tokenÚoauth_token_secret© )r8   r   s   €€r   Úcreate_tokenz@AuthorizationServer.create_token_generator.<locals>.create_tokenW   s)   ø€ à.˜Ñ0Ô0Ø&6Ð&6Ñ&8Ô&8ðð ð r   )r   r    r!   Ústrr   )r   r   r=   r2   r8   r   s      @@@r   r   z*AuthorizationServer.create_token_generatorC   sú   øøø€ Øœ*Ÿ.š.Ð)AÑBÔBˆå�o¥sÑ+Ô+ð 	.Ý+¨OÑ<Ô<ˆOˆOà”Z—^’^Ð$9¸2Ñ>Ô>ˆFð.ð .ð .ð .ð .ð œ:Ÿ>š>Ð*IÑJÔJÐÝÐ&­Ñ,Ô,ð 	.Ý,Ð-=Ñ>Ô>ÐÐà”Z—^’^Ð$@À"ÑEÔEˆFð.ð .ð .ð .ð .ð	ð 	ð 	ð 	ð 	ð 	ð
 Ðr   c                 ó,   — |                       |¦  «        S r0   )r   )r   Ú	client_ids     r   Úget_client_by_idz$AuthorizationServer.get_client_by_id^   s   € Ø× Ò  Ñ+Ô+Ð+r   c                 óž   — | j         d         }t          |¦  «        r#|j        }|j        }|j        } |||||¦  «        S t          d¦  «        ‚)Nr   z "exists_nonce" hook is required.)r   ÚcallableÚ	timestampr@   ÚtokenÚRuntimeError)r   Únoncer   r)   rD   r@   rE   s          r   r   z AuthorizationServer.exists_noncea   sX   € ØŒ{˜>Ô*ˆÝ�D‰>Œ>ð 	<ØÔ)ˆIØÔ)ˆIØ”MˆEØ�4˜˜y¨)°UÑ;Ô;Ð;åÐ=Ñ>Ô>Ð>r   c                 ó®   — | j         d         }t          |¦  «        r+|                      ¦   «         } |||j        |j        ¦  «        S t          d¦  «        ‚)Nr   z/"create_temporary_credential" hook is required.)r   rC   r   r@   Úredirect_urirF   )r   r   r)   rE   s       r   r   z/AuthorizationServer.create_temporary_credentialk   s^   € ØŒ{Ð8Ô9ˆÝ�D‰>Œ>ð 	HØ×(Ò(Ñ*Ô*ˆEØ�4˜˜wÔ0°'Ô2FÑGÔGÐGÝØ=ñ
ô 
ð 	
r   c                 óx   — | j         d         }t          |¦  «        r ||j        ¦  «        S t          d¦  «        ‚)Nr   z,"get_temporary_credential" hook is required.©r   rC   rE   rF   ©r   r   r)   s      r   r   z,AuthorizationServer.get_temporary_credentialt   sD   € ØŒ{Ð5Ô6ˆÝ�D‰>Œ>ð 	'Ø�4˜œÑ&Ô&Ð&åØ:ñ
ô 
ð 	
r   c                 óx   — | j         d         }t          |¦  «        r ||j        ¦  «        S t          d¦  «        ‚)Nr   z/"delete_temporary_credential" hook is required.rK   rL   s      r   r   z/AuthorizationServer.delete_temporary_credential}   sD   € ØŒ{Ð8Ô9ˆÝ�D‰>Œ>ð 	'Ø�4˜œÑ&Ô&Ð&åØ=ñ
ô 
ð 	
r   c                 ó¨   — | j         d         }t          |¦  «        r(t          d¦  «        } ||j        |j        |¦  «         |S t          d¦  «        ‚)Nr   é$   z1"create_authorization_verifier" hook is required.)r   rC   r	   Ú
credentialÚuserrF   )r   r   r)   Úverifiers       r   r   z1AuthorizationServer.create_authorization_verifier†   s]   € ØŒ{Ð:Ô;ˆÝ�D‰>Œ>ð 	Ý% bÑ)Ô)ˆHØˆD�Ô# W¤\°8Ñ<Ô<Ð<ØˆOåØ?ñ
ô 
ð 	
r   c                 ó¦   — | j         d         }t          |¦  «        r'|j        }|                      ¦   «         } |||¦  «        S t	          d¦  «        ‚)Nr   z+"create_token_credential" hook is required.)r   rC   rP   r   rF   )r   r   r)   Útemporary_credentialrE   s        r   r   z+AuthorizationServer.create_token_credential‘   s_   € ØŒ{Ð4Ô5ˆÝ�D‰>Œ>ð 	5Ø#*Ô#5Ð Ø×(Ò(Ñ*Ô*ˆEØ�4˜Ð3Ñ4Ô4Ð4åØ9ñ
ô 
ð 	
r   c                 óZ   — |                       d ¦  «        }|                      |¦  «         |S r0   )Úcreate_oauth1_requestÚvalidate_authorization_request)r   Úreqs     r   Úcheck_authorization_requestz/AuthorizationServer.check_authorization_requestœ   s.   € Ø×(Ò(¨Ñ.Ô.ˆØ×+Ò+¨CÑ0Ô0Ð0Øˆ
r   c                 óH   •— t          ¦   «                              ||¦  «        S r0   )ÚsuperÚcreate_authorization_response)r   r   Ú
grant_userÚ	__class__s      €r   r\   z1AuthorizationServer.create_authorization_response¡   s    ø€ Ý‰wŒwß*Ò*¨7°JÑ?Ô?ð	@r   c                 óF   •— t          ¦   «                              |¦  «        S r0   )r[   Úcreate_token_response)r   r   r^   s     €r   r`   z)AuthorizationServer.create_token_response¥   s   ø€ Ý‰wŒw×,Ò,¨WÑ5Ô5Ð5r   c                 ó¤   — |€t           }|j        dv r|j                             d¬¦  «        }nd }t	          |j        |j        ||j        ¦  «        S )N)ÚPOSTÚPUTT)Úflat)Ú	flask_reqÚmethodÚformÚto_dictr   ÚurlÚheaders)r   r   Úbodys      r   rV   z)AuthorizationServer.create_oauth1_request¨   sR   € Øˆ?ÝˆGØŒ>˜_Ð,Ð,Ø”<×'Ò'¨TÐ'Ñ2Ô2ˆDˆDàˆDÝ˜Wœ^¨W¬[¸$ÀÄÑPÔPÐPr   c                 ó@   — t          t          |¦  «        ||¬¦  «        S )N)Ústatusrj   )r   r
   )r   Ústatus_codeÚpayloadrj   s       r   Úhandle_responsez#AuthorizationServer.handle_response±   s*   € ÝÝ�wÑÔØØð
ñ 
ô 
ð 	
r   )NNN)NNr0   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r*   r   rA   r   r   r   r   r   r   rY   r\   r`   rV   rp   Ú__classcell__)r^   s   @r   r   r      sJ  ø€ € € € € ðð ðð ð ð ð ð ð ð ð!ð !ð !ð
ð ð ð6,ð ,ð ,ð?ð ?ð ?ð
ð 
ð 
ð
ð 
ð 
ð
ð 
ð 
ð	
ð 	
ð 	
ð	
ð 	
ð 	
ðð ð ð
@ð @ð @ð @ð @ð @ð6ð 6ð 6ð 6ð 6ð 6ðQð Qð Qð
ð 
ð 
ð 
ð 
ð 
ð 
r   r   )ÚloggingÚwerkzeug.utilsr   Úflaskr   r   re   Úauthlib.oauth1r   r   Ú_AuthorizationServerÚauthlib.common.securityr	   Úauthlib.common.urlsr
   Ú	getLoggerrq   Úlogr<   r   r   ú<module>r      sã   ðØ €€€Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &ðð ð ð ð ð ð ð ð 3Ð 2Ð 2Ð 2Ð 2Ð 2Ø *Ð *Ð *Ð *Ð *Ð *à€gÔ˜Ñ!Ô!€ðg
ð g
ð g
ð g
ð g
Ð.ñ g
ô g
ð g
ð g
ð g
r   