Ë
    ûûàg‘  ã                   ó@  — d dl Z d dlmZ d dlmZ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mZ d d
lmZ d dlmZ d dlmZmZmZ  eedi «      j9                  di «      j9                  dd«      Z eedi «      j9                  di «      j9                  dd«      Z eedi «      j9                  di «      j9                  dd«      Z eedi «      j9                  di «      j9                  dd«      Z  eedi «      j9                  di «      j9                  dd«      Z! eedi «      j9                  di «      j9                  dd«      Z"d d„Z# G d„ de«      Z$ ejJ                  e$«      Z& ejJ                  e$«      Z' G d„ de«      Z( e	e(jS                  «       «      Z*y)!é    N)Úsettings)ÚPermissionDeniedÚValidationError)Úmethod_decorator)Úcsrf_exempt)ÚView)Úlogin_not_required)Úget_adapter)Úcomplete_social_loginÚrender_authentication_error)Újwtkit)ÚOAuth2Error)ÚOAuth2AdapterÚOAuth2CallbackViewÚOAuth2LoginViewÚSOCIALACCOUNT_PROVIDERSÚgoogleÚ	CERTS_URLz*https://www.googleapis.com/oauth2/v1/certsÚIDENTITY_URLz-https://www.googleapis.com/oauth2/v2/userinfoÚACCESS_TOKEN_URLz#https://oauth2.googleapis.com/tokenÚAUTHORIZE_URLz,https://accounts.google.com/o/oauth2/v2/authÚID_TOKEN_ISSUERzhttps://accounts.google.comÚFETCH_USERINFOFc                 óx   — t        j                  |t        t        | j                  t         j
                  |¬«      S )N)Ú
credentialÚkeys_urlÚissuerÚaudienceÚ
lookup_kidÚverify_signature)r   Úverify_and_decoder   r   Ú	client_idÚlookup_kid_pem_x509_certificate)Úappr   r    s      új/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/google/views.pyÚ_verify_and_decoder&   =   s1   € Ü×#Ñ#ØÜÜØ—‘Ü×9Ñ9Ø)ôð ó    c                   ó6   — e Zd ZdZeZeZeZ	e
ZeZd„ Zd„ Zd„ Zy)ÚGoogleOAuth2Adapterr   c                 óR  — d }|j                  d«      }|rV| j                  ||«      }| j                  rSd|vrO| j                  |j                  «      }|j                  d«      }	|	r!|	|d<   n| j                  |j                  «      }| j                  «       j                  ||«      }
|
S )NÚid_tokenÚpicture)ÚgetÚ_decode_id_tokenÚfetch_userinfoÚ_fetch_user_infoÚtokenÚget_providerÚsociallogin_from_response)ÚselfÚrequestr$   r1   ÚresponseÚkwargsÚdatar+   Úinfor,   Úlogins              r%   Úcomplete_loginz"GoogleOAuth2Adapter.complete_loginP   sœ   € ØˆØ—<‘< 
Ó+ˆÙØ×(Ñ(¨¨hÓ7ˆDØ×"Ò" y¸Ñ'<Ø×,Ñ,¨U¯[©[Ó9�ØŸ(™( 9Ó-�ÙØ&-�D˜’Oà×(Ñ(¨¯©Ó5ˆDØ×!Ñ!Ó#×=Ñ=¸gÀtÓLˆØˆr'   c                 ó8   — | j                    }t        |||¬«      S )aB  
        If the token was received by direct communication protected by
        TLS between this library and Google, we are allowed to skip checking the
        token signature according to the OpenID Connect Core 1.0 specification.

        https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation
        )r    )Údid_fetch_access_tokenr&   )r4   r$   r+   r    s       r%   r.   z$GoogleOAuth2Adapter._decode_id_token_   s#   € ð  $×:Ñ:Ð:ÐÜ! # xÐBRÔSÐSr'   c                 óØ   — t        «       j                  «       j                  | j                  ddj	                  |«      i¬«      }|j
                  st        d«      ‚|j                  «       S )NÚAuthorizationz	Bearer {})ÚheaderszRequest to user info failed)r
   Úget_requests_sessionr-   Úidentity_urlÚformatÚokr   Újson)r4   Úaccess_tokenÚresps      r%   r0   z$GoogleOAuth2Adapter._fetch_user_infoj   sa   € ä‹Mß!Ñ!Ó#ß‰SØ×!Ñ!Ø(¨+×*<Ñ*<¸\Ó*JÐKð ó ð 	ð �wŠwÜÐ;Ó<Ð<Ø�y‰y‹{Ðr'   N)Ú__name__Ú
__module__Ú__qualname__Úprovider_idr   Úaccess_token_urlr   Úauthorize_urlr   Úid_token_issuerr   rB   r   r/   r;   r.   r0   © r'   r%   r)   r)   H   s1   „ Ø€KØ'ÐØ!€MØ%€OØ€LØ#€Nòò	Tór'   r)   c                   óF   ‡ — e Zd Z ee«      ˆ fd„«       Zd„ Zd„ Zd„ Zˆ xZ	S )ÚLoginByTokenViewc                 ó0  •— t        «       | _        | j                  j                  |t        j                  «      | _        	 t        ‰| �  |«      S # t        t        j                  t        t        f$ r"}t        || j
                  |¬«      cY d }~S d }~ww xY w)N)Ú	exception)r
   Úadapterr2   r)   rK   ÚproviderÚsuperÚdispatchr   ÚrequestsÚRequestExceptionr   r   r   )r4   r5   ÚexcÚ	__class__s      €r%   rW   zLoginByTokenView.dispatch}   s€   ø€ ä"“}ˆŒØŸ™×1Ñ1ØÔ(×4Ñ4ó
ˆŒð	VÜ‘7Ñ# GÓ,Ð,øäÜ×%Ñ%ÜÜð	
ò 	Vô /¨w¸¿¹ÐQTÔUÕUûð	Vús   ÁA Á#BÁ3BÂ
BÂBc                 ó   — t        d«      ‚)NÚ405)r   )r4   r5   s     r%   r-   zLoginByTokenView.get�   s   € ô ˜uÓ%Ð%r'   c                 ó®   — | j                  |«       |j                  j                  d«      }| j                  j	                  |d|i«      }t        ||«      S )Nr   r+   )Ú
check_csrfÚPOSTr-   rU   Úverify_tokenr   )r4   r5   Úargsr7   r   r:   s         r%   ÚpostzLoginByTokenView.post’   sJ   € Ø�‰˜Ô à—\‘\×%Ñ% lÓ3ˆ
Ø—‘×*Ñ*¨7°ZÀÐ4LÓMˆÜ$ W¨eÓ4Ð4r'   c                 óÄ   — |j                   j                  d«      }|st        d«      ‚|j                  j                  d«      }|st        d«      ‚||k7  rt        d«      ‚y )NÚg_csrf_tokenzNo CSRF token in Cookie.zNo CSRF token in post body.z&Failed to verify double submit cookie.)ÚCOOKIESr-   r   r`   )r4   r5   Úcsrf_token_cookieÚcsrf_token_bodys       r%   r_   zLoginByTokenView.check_csrf™   sb   € Ø#ŸO™O×/Ñ/°Ó?ÐÙ Ü"Ð#=Ó>Ð>Ø!Ÿ,™,×*Ñ*¨>Ó:ˆÙÜ"Ð#@ÓAÐAØ Ò/Ü"Ð#KÓLÐLð 0r'   )
rH   rI   rJ   r   r	   rW   r-   rc   r_   Ú__classcell__)r[   s   @r%   rQ   rQ   |   s-   ø„ ÙÐ(Ó)óVó *ðVò&ò
5öMr'   rQ   )T)+rX   Údjango.confr   Údjango.core.exceptionsr   r   Údjango.utils.decoratorsr   Údjango.views.decorators.csrfr   Údjango.views.genericr   Ú#allauth.account.internal.decoratorsr	   Úallauth.socialaccount.adapterr
   Úallauth.socialaccount.helpersr   r   Úallauth.socialaccount.internalr   Ú-allauth.socialaccount.providers.oauth2.clientr   Ú,allauth.socialaccount.providers.oauth2.viewsr   r   r   Úgetattrr-   r   r   r   r   r   r   r&   r)   Úadapter_viewÚoauth2_loginÚoauth2_callbackrQ   Úas_viewÚlogin_by_tokenrO   r'   r%   ú<module>r{      s¤  ðÛ å  ß DÝ 4Ý 4Ý %å BÝ 5÷õ 2Ý E÷ñ ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SˆÐBÓCð 
ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SˆÐHÓIð ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SÐ	ÐBÓCð ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SˆÐHÓIð ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SÐ	Ð9Ó:ð ñ ˆHÐ/°Ó4ß�Sˆ�2Óß�SÐ	˜5Ó!ð óô-˜-ô -ð` ,ˆ×+Ñ+Ð,?Ó@€Ø1Ð$×1Ñ1Ð2EÓF€ô%M�tô %MñP Ð-×5Ñ5Ó7Ó8�r'   