Ë
    ûûàg²!  ã                   ó*  — d dl Z d dl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 d dlmZmZmZ d dlmZmZmZ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)  G d„ de«      Z* G d„ de%«      Z+e+gZ,y)é    N)Úquote)ÚREDIRECT_FIELD_NAME)Ú	get_token)Úrender_to_string)Úreverse)Úget_random_string)Úescapejs)ÚEmailAddress)Úget_adapter)ÚQUERY_EMAIL)Ú
AuthActionÚAuthProcessÚProviderAccount)ÚGRAPH_API_URLÚGRAPH_API_VERSIONÚNONCE_LENGTHÚNONCE_SESSION_KEYÚPROVIDER_ID)ÚFacebookOAuth2Adapter)ÚOAuth2Error)ÚOAuth2Provider)Úimport_callableé   )Úget_default_locale_callablec                   ó   — e Zd Zd„ Zd„ Zy)ÚFacebookAccountc                 óL   — | j                   j                  j                  d«      S )NÚlink)ÚaccountÚ
extra_dataÚget©Úselfs    úo/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/facebook/provider.pyÚget_profile_urlzFacebookAccount.get_profile_url&   s   € Ø�|‰|×&Ñ&×*Ñ*¨6Ó2Ð2ó    c                 óF   — | j                   j                  }t        d|z  z   S )NzC/%s/picture?type=square&height=600&width=600&return_ssl_resources=1)r   Úuidr   )r#   r(   s     r$   Úget_avatar_urlzFacebookAccount.get_avatar_url)   s+   € Ø�l‰l×Ñˆô ØSØññð	
r&   N)Ú__name__Ú
__module__Ú__qualname__r%   r)   © r&   r$   r   r   %   s   „ ò3ó
r&   r   c                   óª   ‡ — e Zd ZeZdZeZeZ	dZ
dZdZˆ fd„Zd„ Zˆ fd„Zd„ Zd	„ Zd
„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zdefd„Zˆ xZS )ÚFacebookProviderÚFacebookTzhttps://www.facebook.comz;https://limited.facebook.com/.well-known/oauth/openid/jwks/c                 ó2   •— d | _         t        ‰| �  |i |¤Ž y ©N)Ú_locale_callable_cacheÚsuperÚ__init__)r#   ÚargsÚkwargsÚ	__class__s      €r$   r5   zFacebookProvider.__init__B   s   ø€ Ø&*ˆÔ#Ü‰Ñ˜$Ð) &Ó)r&   c                 óB   — | j                  «       j                  dd«      S )NÚMETHODÚoauth2©Úget_settingsr!   r"   s    r$   Ú
get_methodzFacebookProvider.get_methodF   s   € Ø× Ñ Ó"×&Ñ& x°Ó:Ð:r&   c           	      ó   •— |j                  d| j                  «       «      }|dk(  rÀdt        |j                  t        «      xs d«      z  }dt        |j                  d«      xs t
        j                  «      z  }dt        |j                  d«      xs t        j                  «      z  }dt        |j                  dd«      «      z  }d|›d	|›d	|›d	|›d
�	}dt        |«      ›�}	|	S |dk(  rt        t        | �2  |fi |¤Ž}	|	S t        d|z  «      ‚)NÚmethodÚjs_sdkz'%s'Ú ÚprocessÚactionÚscopezallauth.facebook.login(z, ú)zjavascript:r;   zInvalid method specified: %s)Úpopr>   r	   r!   r   r   ÚLOGINr   ÚAUTHENTICATEr   r4   r/   Úget_login_urlÚRuntimeError)r#   Úrequestr7   r@   ÚnextrC   rD   rE   ÚjsÚretr8   s             €r$   rJ   zFacebookProvider.get_login_urlI   s  ø€ Ø—‘˜H d§o¡oÓ&7Ó8ˆØ�XÒØœH V§Z¡ZÔ0CÓ%DÒ%JÈÓKÑKˆDØœx¨¯
©
°9Ó(=Ò(RÄ×ARÑARÓSÑSˆGØœh v§z¡z°(Ó';Ò'V¼z×?VÑ?VÓWÑWˆFØœX f§j¡j°¸"Ó&=Ó>Ñ>‰EâÚÚÚð	‰Bô &+¨2¤YÐ0ˆCð
 ˆ
ð	 �xÒÜÔ(¨$Ñ=¸gÑPÈÑPˆCð ˆ
ô Ð=ÀÑFÓGÐGr&   c                 ór   — | j                  «       }|j                  d«      }|rt        |«      S t        «       S )NÚLOCALE_FUNC)r=   r!   r   r   )r#   ÚsettingsÚfuncs      r$   Ú_get_locale_callablez%FacebookProvider._get_locale_callable]   s4   € Ø×$Ñ$Ó&ˆØ�|‰|˜MÓ*ˆÙ(,Œ˜tÓ$ÐOÔ2MÓ2OÐOr&   c                 óf   — | j                   s| j                  «       | _         | j                  |«      S r2   )r3   rT   )r#   rL   s     r$   Úget_locale_for_requestz'FacebookProvider.get_locale_for_requestb   s-   € Ø×*Ò*Ø*.×*CÑ*CÓ*EˆDÔ'Ø×*Ñ*¨7Ó3Ð3r&   c                 ó8   — g }t         r|j                  d«       |S )NÚemail)r   Úappend)r#   rE   s     r$   Úget_default_scopez"FacebookProvider.get_default_scopeg   s   € ØˆÝØ�L‰L˜Ô!Øˆr&   c                 óN   — | j                  «       }g d¢}|j                  d|«      S )N)ÚidrX   ÚnameÚ
first_nameÚ	last_nameÚverifiedÚlocaleÚtimezoner   ÚgenderÚupdated_timeÚFIELDSr<   )r#   rR   Údefault_fieldss      r$   Ú
get_fieldszFacebookProvider.get_fieldsm   s*   € Ø×$Ñ$Ó&ˆò
ˆð �|‰|˜H nÓ5Ð5r&   c                 óŒ   •— t         ‰| �  ||«      }|t        j                  k(  rd|d<   |S |t        j                  k(  rd|d<   |S )NÚreauthenticateÚ	auth_typeÚ	rerequest)r4   Úget_auth_params_from_requestr   ÚREAUTHENTICATEÚ	REREQUEST)r#   rL   rD   rO   r8   s       €r$   rl   z-FacebookProvider.get_auth_params_from_request~   sR   ø€ Ü‰gÑ2°7¸FÓCˆØ”Z×.Ñ.Ò.Ø/ˆC�Ñð ˆ
ð ”z×+Ñ+Ò+Ø*ˆC�ÑØˆ
r&   c                 óŽ   — |j                   t        dœ}| j                  «       }|j                  |j	                  di «      «       |S )N)ÚappIdÚversionÚINIT_PARAMS)Ú	client_idr   r=   Úupdater!   )r#   rL   ÚappÚinit_paramsrR   s        r$   Úget_init_paramsz FacebookProvider.get_init_params†   s>   € Ø #§¡Ô:KÑLˆØ×$Ñ$Ó&ˆØ×Ñ˜8Ÿ<™<¨°rÓ:Ô;ØÐr&   c                 óÄ   — | j                  |d«      }dj                  | j                  |«      «      |d<   |j                  d«      dk(  r| j	                  |d¬«      |d<   |S )	NÚauthenticateú,rE   rj   ri   T)Ú	or_createÚ
auth_nonce)rl   ÚjoinÚget_scope_from_requestr!   Ú	get_nonce)r#   rL   rO   s      r$   Úget_fb_login_optionsz%FacebookProvider.get_fb_login_optionsŒ   s_   € Ø×/Ñ/°¸ÓHˆØ—x‘x × ;Ñ ;¸GÓ DÓEˆˆG‰Ø�7‰7�;ÓÐ#3Ò3Ø $§¡¨wÀ$ Ó GˆC�ÑØˆ
r&   c                 ó  — | j                  «       }|j                  dd«      }t        j                  «       j	                  |«      D �cg c]  }|d   €Œ	|d   ‘Œ }}d|v r#| j                  |«      }|j                  |¬«      }|S c c}w )NÚSDK_URLz&//connect.facebook.net/{locale}/sdk.jsr   ra   )ra   )r=   r!   ÚstringÚ	FormatterÚparserV   Úformat)r#   rL   rR   Úsdk_urlÚtupÚfield_namesra   s          r$   Úget_sdk_urlzFacebookProvider.get_sdk_url“   s�   € Ø×$Ñ$Ó&ˆØ—,‘,˜yÐ*RÓSˆä$×.Ñ.Ó0×6Ñ6°wÓ?ö
ØÀ3ÀqÁ6ÑCUˆC�‹Fð
ˆð 
ð �{Ñ"Ø×0Ñ0°Ó9ˆFØ—n‘n¨F�nÓ3ˆGØˆùò
s   Á
BÁBc                 ó˜  ‡— | j                  «       dk7  ryˆfd„}| j                  j                  t        | j	                  ‰«      | j                  ‰| j                  «      | j                  ‰«       |d«       |d«       |d«      ‰j                  | j                  ‰d¬«      «       |d	«      t        ‰«      d
œ}d|i}t        d|‰¬«      S )NrA   rB   c                 ó8   •— ‰j                  t        | «      «      S r2   )Úbuild_absolute_urir   )r]   rL   s    €r$   Úabs_uriz*FacebookProvider.media_js.<locals>.abs_uri¢   s   ø€ Ø×-Ñ-¬g°d«mÓ<Ð<r&   Úfacebook_login_by_tokenÚsocialaccount_login_cancelledÚaccount_logoutr;   )r@   Úsocialaccount_login_error)rp   rq   ÚsdkUrlÚ
initParamsÚloginOptionsÚloginByTokenUrlÚ	cancelUrlÚ	logoutUrlÚloginUrlÚerrorUrlÚ	csrfTokenÚfb_datazfacebook/fbconnect.html)rL   )r>   ru   rs   r   rŠ   rw   r€   r�   rJ   r   r   )r#   rL   rŽ   rœ   Úctxs    `   r$   Úmedia_jszFacebookProvider.media_jsž   sÎ   ø€ Ø�?‰?Ó Ò(Øô	=ð —X‘X×'Ñ'Ü(Ø×&Ñ& wÓ/Ø×.Ñ.¨w¸¿¹ÓAØ ×5Ñ5°gÓ>Ù&Ð'@ÓAÙ Ð!@ÓAÙ Ð!1Ó2Ø×2Ñ2Ø×"Ñ" 7°8Ð"Ó<óñ  Ð ;Ó<Ü" 7Ó+ñ
ˆð ˜'Ð"ˆÜÐ 9¸3ÈÔPÐPr&   c                 óÖ   — |r!|j                   j                  t        d «      }n|j                   j                  t        «      }|s$|r"t	        t
        «      }||j                   t        <   |S r2   )ÚsessionrG   r   r!   r   r   )r#   rL   r{   rG   Únonces        r$   r   zFacebookProvider.get_nonce·   sT   € ÙØ—O‘O×'Ñ'Ô(9¸4Ó@‰Eà—O‘O×'Ñ'Ô(9Ó:ˆEÙ™Ü%¤lÓ3ˆEØ16ˆG�O‰OÔ-Ñ.Øˆr&   c                 ó   — |d   S )Nr\   r-   ©r#   Údatas     r$   Úextract_uidzFacebookProvider.extract_uidÁ   s   € Ø�D‰zÐr&   c           	      ó¸   — t        |j                  d«      |j                  d«      |j                  d«      |j                  d«      |j                  d«      ¬«      S )NrX   Úusernamer^   r_   r]   )rX   r§   r^   r_   r]   )Údictr!   r£   s     r$   Úextract_common_fieldsz&FacebookProvider.extract_common_fieldsÄ   sK   € ÜØ—(‘(˜7Ó#Ø—X‘X˜jÓ)Ø—x‘x Ó-Ø—h‘h˜{Ó+Ø—‘˜&Ó!ô
ð 	
r&   c                 ój   — g }|j                  d«      }|r|j                  t        |dd¬«      «       |S )NrX   FT)rX   r`   Úprimary)r!   rY   r
   )r#   r¤   rO   rX   s       r$   Úextract_email_addressesz(FacebookProvider.extract_email_addressesÍ   s4   € ØˆØ—‘˜Ó!ˆÙð �J‰J”|¨%¸%ÈÔNÔOØˆ
r&   Útokenc                 ón  — ddl m} |j                  d«      }|j                  d«      }t        ||g«      st	        «       j                  d«      ‚	 |r|j                  || |«      S |sJ ‚|j                  || |«      S # t        t        j                  f$ r}t	        «       j                  d«      |‚d}~ww xY w)a  
        Verifies both normal oAuth2-style "access_token"s as well
        as OIDC-style "Limited Login" JWTs.

        Limited Login is an OIDC-based form of Facebook Login
        that their iOS SDK uses when App Tracking Transparency consent is denied.
        r   )ÚflowsÚaccess_tokenÚid_tokenÚinvalid_tokenN)Ú(allauth.socialaccount.providers.facebookr¯   r!   Úanyr   Úvalidation_errorÚverify_tokenÚverify_limited_login_tokenr   ÚrequestsÚRequestException)r#   rL   r­   r¯   r°   r±   Úes          r$   r¶   zFacebookProvider.verify_tokenÖ   s°   € õ 	Cà—y‘y Ó0ˆØ—9‘9˜ZÓ(ˆä�L (Ð+Ô,Ü“-×0Ñ0°ÓAÐAð	IÙØ×)Ñ)¨'°4¸ÓFÐFá��xØ×7Ñ7¸ÀÀxÓPÐPøÜœX×6Ñ6Ð7ò 	IÜ“-×0Ñ0°ÓAÀqÐHûð	Iús   ÁA< Á%A< Á<B4ÂB/Â/B4)FF) r*   r+   r,   r   r\   r]   r   Úaccount_classr   Úoauth2_adapter_classÚsupports_token_authenticationÚ!limited_login_expected_jwt_issuerÚlimited_login_jwks_urlr5   r>   rJ   rT   rV   rZ   rg   rl   rw   r€   rŠ   rž   r   r¥   r©   r¬   r¨   r¶   Ú__classcell__)r8   s   @r$   r/   r/   4   s�   ø„ Ø	€BØ€DØ#€MØ0ÐØ$(Ð!ð )CÐ%àEð ô*ò;ôò(Pò
4ò
ò6ô"òòò	òQó2òò
òðI¨4÷ Ir&   r/   )-r¸   rƒ   Úurllib.parser   Údjango.contrib.authr   Údjango.middleware.csrfr   Údjango.template.loaderr   Údjango.urlsr   Údjango.utils.cryptor   Údjango.utils.htmlr	   Úallauth.account.modelsr
   Úallauth.socialaccount.adapterr   Ú"allauth.socialaccount.app_settingsr   Ú$allauth.socialaccount.providers.baser   r   r   Ú2allauth.socialaccount.providers.facebook.constantsr   r   r   r   r   Ú.allauth.socialaccount.providers.facebook.viewsr   Ú-allauth.socialaccount.providers.oauth2.clientr   Ú/allauth.socialaccount.providers.oauth2.providerr   Úallauth.utilsr   ra   r   r   r/   Úprovider_classesr-   r&   r$   ú<module>rÒ      sy   ðÛ Û Ý å 3Ý ,Ý 3Ý Ý 1Ý &å /Ý 5Ý :÷ñ ÷
õ õõ FÝ JÝ )å /ô
�oô 
ôyI�~ô yIðx %Ð%Ñ r&   