
    fb                     *   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    l/var/www/cs2snipe.com/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+    ll 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
 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 Z xZS )FacebookProviderFacebookTc                 2    d | _         t        |   |i | y N)_locale_callable_cachesuper__init__)r#   argskwargs	__class__s      r$   r5   zFacebookProvider.__init__;   s    &*#$)&)r&   c                 B    | j                         j                  dd      S )NMETHODoauth2get_settingsr!   r"   s    r$   
get_methodzFacebookProvider.get_method?   s      "&&x::r&   c           	          |j                  d| j                               }|dk(  rd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_urlB   s   Hdoo&78XHVZZ0C%D%JKKDx

9(=(RARARSSGhvzz(';'Vz?V?VWWFXfjj"&=>>E	B &+2Y0C
 
	 x($=gPPC 
 =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_callableV   s4    $$&||M*(,t$O2M2OOr&   c                 f    | j                   s| j                         | _         | j                  |      S r2   )r3   rT   )r#   rL   s     r$   get_locale_for_requestz'FacebookProvider.get_locale_for_request[   s-    ***.*C*C*ED'**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_scope`   s    LL!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_fieldsf   s*    $$&
 ||Hn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_requestw   sR    g27F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xx ; ;G DEG77;#33 $w$ GC
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6w?
3q6CUCF
 
 {"009FnnFn3G
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    --gdm<<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    ??(	= XX''(&&w/..wA 55g>&'@A !@A !1222""78"<   ;<"7+
 '" 93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    OO''(94@EOO''(9:E%l3E16GOO-.r&   c                     |d   S )Nr\   r-   r#   datas     r$   extract_uidzFacebookProvider.extract_uid   s    Dz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#XXj)xx-hh{+&!
 	
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    ! JJ|%%NO
r&   c                    ddl m} |j                  d      }|st               j	                  d      	 |j                  || |      }|S # t        t        j                  f$ r}t               j	                  d      |d }~ww xY w)Nr   )flowsaccess_tokeninvalid_token)	(allauth.socialaccount.providers.facebookr   r!   r   validation_errorverify_tokenr   requestsRequestException)r#   rL   tokenr   r   logines          r$   r   zFacebookProvider.verify_token   s~    Byy0-00AA	I&&wlCE  X667 	I-00AqH	Is   A	 	B"A<<B)FF)r*   r+   r,   r   r\   r]   r   account_classr   oauth2_adapter_classsupports_token_authenticationr5   r>   rJ   rT   rV   rZ   rg   rl   rw   r   r   r   r   r   r   r   r   __classcell__)r8   s   @r$   r/   r/   4   su    	BD#M0$(!*;(P
4
6"	Q2

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      sw       3 , 3  1 & / 5 : 
  F J ) /
o 
e~ eP %% r&   