
    )Jf}                        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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 d dlmZ ddlmZ  eedi                                di                                dd          Z! eedi                                di                                dd"                    e!                    Z#dZ$dZ% G d de          Z& G d de          Z'e'gZ(dS )    N)quote)settings)	get_token)render_to_string)reverse)get_random_string)escapejs	mark_safe)EmailAddress)QUERY_EMAIL)
AuthActionAuthProcessProviderAccount)OAuth2Provider)import_callable   )get_default_locale_callableSOCIALACCOUNT_PROVIDERSfacebookVERSIONzv13.0GRAPH_API_URLzhttps://graph.facebook.com/{}allauth_facebook_nonce    c                   *     e Zd Zd Zd Z fdZ xZS )FacebookAccountc                 @    | j         j                            d          S )Nlink)account
extra_datagetselfs    t/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/facebook/provider.pyget_profile_urlzFacebookAccount.get_profile_url)   s    |&**6222    c                 4    | 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 S	
r%   c                     t          t          |                                           }| j        j                            d|          S )Nname)superr   to_strr   r   r    )r"   dflt	__class__s     r#   r,   zFacebookAccount.to_str6   s9    _d++2244|&**64888r%   )__name__
__module____qualname__r$   r(   r,   __classcell__r.   s   @r#   r   r   (   sV        3 3 3
 
 
9 9 9 9 9 9 9 9 9r%   r   c                        e Zd ZdZdZe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 xZS )FacebookProviderr   Facebookc                 H    d | _          t                      j        |i | d S N)_locale_callable_cacher+   __init__)r"   argskwargsr.   s      r#   r:   zFacebookProvider.__init__@   s-    &*#$)&)))))r%   c                 R    |                                                      dd          S )NMETHODoauth2get_settingsr    r!   s    r#   
get_methodzFacebookProvider.get_methodD   s$      ""&&x:::r%   c           	      z   |                     d|                                           }|dk    rdt          |                    d          pd          z  }dt          |                    d          pt          j                  z  }dt          |                    d          pt          j                  z  }dt          |                    dd                    z  }d	|d
|d
|d
|d	}dt          |          }	n:|dk    r" t          t          |           j        |fi |}	nt          d|z            |	S )Nmethodjs_sdkz'%s'next processactionscopezallauth.facebook.login(z, )zjavascript:r?   zInvalid method specified: %s)poprB   r	   r    r   LOGINr   AUTHENTICATEr   r+   r5   get_login_urlRuntimeError)r"   requestr<   rD   rF   rH   rI   rJ   jsretr.   s             r#   rO   zFacebookProvider.get_login_urlG   s@   Hdoo&7&788XHVZZ%7%7%=2>>>Dx

9(=(=(RARSSSGhvzz(';';'Vz?VWWWFXfjj"&=&=>>>EE	BB &+2YYY0CCx=%($//=gPPPPCC=FGGG
r%   c                     |                                  } |j        d          }|rt          |          nt                      S )NLOCALE_FUNC)rA   r    r   r   )r"   r   funcs      r#   _get_locale_callablez%FacebookProvider._get_locale_callable[   sC    $$&&x|M**(,Ot$$$2M2O2OOr%   c                 l    | j         s|                                 | _         |                      |          S r8   )r9   rW   )r"   rQ   s     r#   get_locale_for_requestz'FacebookProvider.get_locale_for_request`   s6    * 	F*.*C*C*E*ED'**7333r%   c                 B    g }t           r|                    d           |S )Nemail)r   append)r"   rJ   s     r#   get_default_scopez"FacebookProvider.get_default_scopee   s&     	"LL!!!r%   c                 T    |                                  }g d} |j        d|          S )N)idr[   r*   
first_name	last_nameverifiedlocaletimezoner   genderupdated_timeFIELDSr@   )r"   r   default_fieldss      r#   
get_fieldszFacebookProvider.get_fieldsk   s:    $$&&
 
 
 x|Hn555r%   c                     t          t          |                               ||          }|t          j        k    rd|d<   n|t          j        k    rd|d<   |S )Nreauthenticate	auth_type	rerequest)r+   r5   get_auth_paramsr   REAUTHENTICATE	REREQUEST)r"   rQ   rI   rS   r.   s       r#   rn   z FacebookProvider.get_auth_params|   s[    $d++;;GVLLZ.../Cz+++*C
r%   c                     |j         t          d}|                                 }|                     |j        di                      |S )N)appIdversionINIT_PARAMS)	client_idGRAPH_API_VERSIONrA   updater    )r"   rQ   appinit_paramsr   s        r#   get_init_paramsz FacebookProvider.get_init_params   sK     #:KLL$$&&<8<r::;;;r%   c                     |                      |d          }d                    |                     |                    |d<   |                    d          dk    r|                     |d          |d<   |S )	Nauthenticate,rJ   rl   rk   T)	or_create
auth_nonce)rn   join	get_scoper    	get_nonce)r"   rQ   rS   s      r#   get_fb_login_optionsz%FacebookProvider.get_fb_login_options   so    ""7N;;xxw 7 788G77;#333 $w$ G GC
r%   c                    |                                  } |j        dd          }d t          j                                        |          D             }d|v r+|                     |          }|                    |          }|S )NSDK_URLz&//connect.facebook.net/{locale}/sdk.jsc                 .    g | ]}|d          
|d          S )r    ).0tups     r#   
<listcomp>z0FacebookProvider.get_sdk_url.<locals>.<listcomp>   s,     
 
 
3q6CUCFCUCUCUr%   rc   )rc   )rA   r    string	FormatterparserY   format)r"   rQ   r   sdk_urlfield_namesrc   s         r#   get_sdk_urlzFacebookProvider.get_sdk_url   s    $$&&(,y*RSS
 
$.0066w??
 
 
 {""0099FnnFn33Gr%   c                    |                                  dk    rdS fd}| j        j        t          |                               |                     | j                  |                                |d           |d           |d                              |                     d                     |d	          t                    d
}dt          t          j        |                    i}t          d|          S )NrE   rG   c                 H                         t          |                     S r8   )build_absolute_urir   )r*   rQ   s    r#   abs_uriz*FacebookProvider.media_js.<locals>.abs_uri   s    --gdmm<<<r%   facebook_login_by_tokensocialaccount_login_cancelledaccount_logoutr?   )rD   socialaccount_login_error)rr   rs   sdkUrl
initParamsloginOptionsloginByTokenUrl	cancelUrl	logoutUrlloginUrlerrorUrl	csrfTokenfb_datazfacebook/fbconnect.html)rQ   )rB   rx   ru   rv   r   rz   r   r   rO   r   r
   jsondumpsr   )r"   rQ   r   r   ctxs    `   r#   media_jszFacebookProvider.media_js   s(   ??((2	= 	= 	= 	= 	= X'(&&w//..wAA 55g>>&w'@AA !@AA !12222""78"<<    ;<<"7++
 
 )DJw$7$7889 93PPPPr%   Fc                     |r!|j                             t          d           }n|j                             t                    }|s%|r#t	          t
                    }||j         t          <   |S r8   )sessionrL   NONCE_SESSION_KEYr    r   NONCE_LENGTH)r"   rQ   r~   rL   nonces        r#   r   zFacebookProvider.get_nonce   sh     	;O''(94@@EEO''(9::E 	7 	7%l33E16GO-.r%   c                     |d         S )Nr_   r   r"   datas     r#   extract_uidzFacebookProvider.extract_uid   s    Dzr%   c           	          t          |                    d          |                    d          |                    d          |                    d          |                    d                    S )Nr[   usernamer`   ra   r*   )r[   r   r`   ra   r*   )dictr    r   s     r#   extract_common_fieldsz&FacebookProvider.extract_common_fields   sd    ((7##XXj))xx--hh{++&!!
 
 
 	
r%   c                     g }|                     d          }|r%|                    t          |dd                     |S )Nr[   FT)r[   rb   primary)r    r\   r   )r"   r   rS   r[   s       r#   extract_email_addressesz(FacebookProvider.extract_email_addresses   sI    !! 	P JJ|%%NNNOOO
r%   )FF)r/   r0   r1   r_   r*   r   account_classr:   rB   rO   rW   rY   r]   ri   rn   rz   r   r   r   r   r   r   r   r2   r3   s   @r#   r5   r5   ;   sG       	BD#M* * * * *; ; ;    (P P P
4 4 4
  6 6 6"        	 	 	Q Q Q2     
 
 
      r%   r5   ))r   r   urllib.parser   django.confr   django.middleware.csrfr   django.template.loaderr   django.urlsr   django.utils.cryptor   django.utils.htmlr	   r
   allauth.account.modelsr   "allauth.socialaccount.app_settingsr   $allauth.socialaccount.providers.baser   r   r   /allauth.socialaccount.providers.oauth2.providerr   allauth.utilsr   rc   r   getattrr    rv   r   r   r   r   r   r5   provider_classesr   r%   r#   <module>r      s#                       , , , , , , 3 3 3 3 3 3       1 1 1 1 1 1 1 1 1 1 1 1 1 1 / / / / / / : : : : : :         
 K J J J J J ) ) ) ) ) ) / / / / / / GH/44SRSG  GH/44SRS9@@ARSSTT  - 9 9 9 9 9o 9 9 9&W W W W W~ W W Wt %%   r%   