Ë
    ”Âi¬  ã                   óÒ   — d dl mZ d dl mZ d dl mZ d dl mZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ  G d„ d«      Z G d„ deee«      Z G d„ deee
e«      Zy)é    )Úg)Úredirect)Úrequest)Úsessioné   )ÚBaseApp)ÚOAuth1Mixin)ÚOAuth2Mixin)Ú
OAuthError)ÚOpenIDMixin)ÚOAuth1Session)ÚOAuth2Sessionc                   óT   — e Zd Zed„ «       Zej
                  d„ «       Zd„ Zd„ Zdd„Zy)ÚFlaskAppMixinc                 óž   — d| j                   › �}t        j                  |«      }|r|S | j                  r| j                  «       }|| _        |S y ©NÚ_oauth_token_)Únamer   ÚgetÚ_fetch_tokenÚtoken)ÚselfÚattrr   s      ú^/var/www/timesheet/venv/lib/python3.12/site-packages/authlib/integrations/flask_client/apps.pyr   zFlaskAppMixin.token   sO   € à˜tŸy™y˜kÐ*ˆÜ—‘�d“ˆÙØˆLØ×ÒØ×%Ñ%Ó'ˆEØˆDŒJØˆLð ó    c                 óD   — d| j                   › �}t        t        ||«       y r   )r   Úsetattrr   )r   r   r   s      r   r   zFlaskAppMixin.token   s   € à˜tŸy™y˜kÐ*ˆÜ”�4˜Õr   c                 ó   — | j                   S ©N)r   )r   ÚargsÚkwargss      r   Ú_get_requested_tokenz"FlaskAppMixin._get_requested_token    s   € Ø�z‰zÐr   c                 ó„   — |j                  dd «      }|r"| j                  j                  t        ||«       y t	        d«      ‚)NÚstatezMissing state value)ÚpopÚ	frameworkÚset_state_datar   ÚRuntimeError)r   r!   r$   s      r   Úsave_authorize_dataz!FlaskAppMixin.save_authorize_data#   s7   € Ø—
‘
˜7 DÓ)ˆÙØ�N‰N×)Ñ)¬'°5¸&ÕAäÐ4Ó5Ð5r   Nc                 ól   —  | j                   |fi |¤Ž} | j                  dd|i|¤Ž t        |d   «      S )zäCreate a HTTP Redirect for Authorization Endpoint.

        :param redirect_uri: Callback or redirect URI for authorization.
        :param kwargs: Extra parameters to include.
        :return: A HTTP redirect response.
        Úredirect_uriÚurl© )Úcreate_authorization_urlr)   r   )r   r+   r!   Úrvs       r   Úauthorize_redirectz FlaskAppMixin.authorize_redirect*   sB   € ð +ˆT×*Ñ*¨<ÑB¸6ÑBˆØ ˆ× Ñ ÑA¨lÐA¸bÒAÜ˜˜5™	Ó"Ð"r   r   )	Ú__name__Ú
__module__Ú__qualname__Úpropertyr   Úsetterr"   r)   r0   r-   r   r   r   r      s;   „ Øñó ðð ‡\�\ñ ó ð òò6ô	#r   r   c                   ó   — e Zd ZeZd„ Zy)ÚFlaskOAuth1Appc                 ó„  — t         j                  j                  d¬«      }|j                  d«      }|st	        d¬«      ‚| j
                  j                  t        |«      }|st	        d¬«      ‚|d   |d<   |j                  |«       | j
                  j                  t        |«        | j                  di |¤Ž}|| _        |S )	úHFetch access token in one step.

        :return: A token dict.
        T)ÚflatÚoauth_tokenzMissing "oauth_token" parameter)Údescriptionz)Missing "request_token" in temporary dataÚrequest_tokenr-   )r   r    Úto_dictr   r   r&   Úget_state_datar   ÚupdateÚclear_state_dataÚfetch_access_tokenr   )r   r!   Úparamsr$   Údatar   s         r   Úauthorize_access_tokenz%FlaskOAuth1App.authorize_access_token9   s­   € ô
 —‘×%Ñ%¨4Ð%Ó0ˆØ—
‘
˜=Ó)ˆÙÜÐ)JÔKÐKà�~‰~×,Ñ,¬W°eÓ<ˆÙÜÐ)TÔUÐUà"& Ñ"7ˆˆÑØ�‰�fÔØ�‰×'Ñ'¬°Ô7Ø'�×'Ñ'Ñ1¨&Ñ1ˆØˆŒ
Øˆr   N)r1   r2   r3   r   Ú
client_clsrE   r-   r   r   r7   r7   6   s   „ Ø€Jór   r7   c                   ó   — e Zd ZeZd„ Zy)ÚFlaskOAuth2Appc                 ó’  — t         j                  dk(  r�t         j                  j                  d«      }|r,t         j                  j                  d«      }t	        ||¬«      ‚t         j                  j                  d«      t         j                  j                  d«      dœ}n?t         j
                  j                  d«      t         j
                  j                  d«      dœ}| j                  j                  t        |j                  d«      «      }| j                  j                  t        |j                  d«      «       | j                  ||«      }|j                  dd	«      }|j                  d
d	«      }|j                  dd«      } | j                  di |¤|¤Ž}	|	| _        d|	v r"d|v r| j                  |	|d   |||¬«      }
|
|	d<   |	S )r9   ÚGETÚerrorÚerror_description)rK   r<   Úcoder$   )rM   r$   Úclaims_optionsNÚ
claims_clsÚleewayéx   Úid_tokenÚnonce)rS   rN   rO   rP   Úuserinfor-   )r   Úmethodr    r   r   Úformr&   r?   r   rA   Ú_format_state_paramsr%   rB   r   Úparse_id_token)r   r!   rK   r<   rC   Ú
state_datarN   rO   rP   r   rT   s              r   rE   z%FlaskOAuth2App.authorize_access_tokenR   sŽ  € ô
 �>‰>˜UÒ"Ü—L‘L×$Ñ$ WÓ-ˆEÙÜ%Ÿl™l×.Ñ.Ð/BÓC�Ü  u¸+ÔFÐFô  Ÿ™×(Ñ(¨Ó0Ü Ÿ™×)Ñ)¨'Ó2ñ‰Fô  Ÿ™×(Ñ(¨Ó0Ü Ÿ™×)Ñ)¨'Ó2ñˆFð
 —^‘^×2Ñ2´7¸F¿J¹JÀwÓ<OÓPˆ
Ø�‰×'Ñ'¬°·±¸GÓ1DÔEØ×*Ñ*¨:°vÓ>ˆàŸ™Ð$4°dÓ;ˆØ—Z‘Z ¨dÓ3ˆ
Ø—‘˜H cÓ*ˆØ'�×'Ñ'Ñ;¨&Ð;°FÑ;ˆØˆŒ
à˜Ñ 7¨jÑ#8Ø×*Ñ*ØØ  Ñ)Ø-Ø%Øð +ó ˆHð !)ˆE�*ÑØˆr   N)r1   r2   r3   r   rF   rE   r-   r   r   rH   rH   O   s   „ Ø€Jó(r   rH   N)Úflaskr   r   r   r   Úbase_clientr   r	   r
   r   r   Úrequests_clientr   r   r   r7   rH   r-   r   r   ú<module>r]      sS   ðÝ Ý Ý Ý å !Ý %Ý %Ý $Ý %Ý +Ý +÷$#ñ $#ôN�] K°ô ô2+�] K°¸gõ +r   