
    )Jf                        d dl Z d dlZ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mZ d dlmZmZ d dlmZmZmZ ddlmZ ddlm Z m!Z!m"Z"  ej#        e$          Z%d Z&d Z' G d de          Z( ej)        e(          Z* ej)        e(          Z+ G d de          Z,e,-                                Z.dS )    N)	timedelta)forms)cachePermissionDenied)timezone)View)app_settings)get_adapter)complete_social_loginrender_authentication_error)SocialLoginSocialToken)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )FacebookConnectForm)GRAPH_API_URLGRAPH_API_VERSIONFacebookProviderc                     |j                             d          }| j                            d          }t          j        ||t
          j                                                  }|S )Nzutf-8)	digestmod)tokenencodesecrethmacnewhashlibsha256	hexdigest)appr   msgkeyappsecret_proofs        q/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/facebook/views.pycompute_appsecret_proofr'   !   sX     +

W
%
%C
*

G
$
$ChsC7>BBBLLNNO    c           	         |                     |           }t                                                                          t          dz   d                    |                                          |j        t          ||          d          }|	                                 |
                                }|                    | |          }|S )Nz/me,)fieldsaccess_tokenr%   params)get_providerr   get_requests_sessiongetr   join
get_fieldsr   r'   raise_for_statusjsonsociallogin_from_response)requestr"   r   providerresp
extra_datalogins          r&   fb_complete_loginr<   *   s    ((H					E!((8#6#6#8#899 %#:3#F#F  
 

 

 	 	J..w
CCELr(   c                       e Zd Zej        Zd                    e          Ze	j
                            ei           ZdZe                    de          Zedz   ZdZdZd ZdS )	FacebookOAuth2Adapterz(https://www.facebook.com/{}/dialog/oauthr*   AUTHORIZE_URL/oauth/access_tokenGET
expires_inc                 $    t          |||          S )N)r<   )selfr7   r"   r,   kwargss        r&   complete_loginz$FacebookOAuth2Adapter.complete_loginK   s     #|<<<r(   N)__name__
__module____qualname__r   idprovider_idformatr   provider_default_auth_urlr
   	PROVIDERSr1   settingsscope_delimiterauthorize_urlr   access_token_urlaccess_token_methodexpires_in_keyrF    r(   r&   r>   r>   >   s        "%K J Q Q! ! %))+r::HOLL2KLLM$'<<!N= = = = =r(   r>   c                   6     e Zd Z fdZd Zd Zd Zd Z xZS )LoginByTokenViewc                 L   t                      | _        | j                            |t          j                  | _        	 t                                          |          S # t          j	        t          j        t          f$ r!}t          || j        |          cY d }~S d }~ww xY w)N)	exception)r   adapterr/   r   rJ   r8   superdispatchrequestsRequestExceptionr   ValidationErrorr   r   )rD   r7   exc	__class__s      r&   r\   zLoginByTokenView.dispatchT   s    "}}11';K;NOO	V77##G,,,%!
 	V 	V 	V
 /wQTUUUUUUUUU	Vs     A! !!B#BB#B#c                      t          d          )N405r   )rD   r7   s     r&   r1   zLoginByTokenView.get`   s     u%%%r(   c                    t          |j                  }|                                st          j                    | j        }|                    |          }|j        }|j        d         }| 	                    ||           d }|
                    d          dk    rt                                                      
                    t          dz   |j        |d                                          }|                    |d          }	|	o|	|
                    d	          k    }
nd}
|
r|                                
                    d
          rt                                                      
                    t          dz   d|j        |j        |d                                          }|d         }|
                    d          }|r1t'          j                    t+          t-          |                    z   }|
rSt/          |||          }t1          |||          }||_        t5          j        |          |_        t;          ||          }|S )Nr,   	auth_typereauthenticatez/oauth/access_token_info)	client_idr,   r-   T)pop
auth_nonceEXCHANGE_TOKENr@   fb_exchange_token)
grant_typerg   client_secretrk   rB   )seconds)r"   r   
expires_at)r   POSTis_validr   r_   r8   get_fb_login_optionsr"   cleaned_datainspect_tokenr1   r   r0   r   rg   r5   	get_nonceget_settingsr   r   nowr   intr   r<   r   r   state_from_requeststater   )rD   r7   formr8   login_optionsr"   r,   ro   infononceokr9   rB   r   r;   rets                   r&   postzLoginByTokenView.poste   sH   "7<00}} 	*')))= 55g>>l(88\222
[))-===%%''!$>>%(](4       &&wD&99E:5DHH\$:$::BBB 	Q(''))--.>?? 	Q%%''!$99&9%(]),-9	        /L,//J Q%\^^iJ.P.P.PP
 	8C|
SSSE%gsE::EEK%8AAEK'77C
r(   c                    |j         }d|j         d}t          j        |          }|st	                                                                          t          dz   |j        |j        dd          }|                                 |	                                }|d         }|
                                                    dd	          }t          j        |||
           |S )Nzallauth.facebook.app_token[]r@   client_credentials)rg   rm   rl   r-   r,   APP_TOKEN_CACHE_TIMEOUTi,  )timeout)r"   rg   r   r1   r   r0   r   r   r4   r5   rv   set)rD   r8   r"   	cache_key	app_tokenr9   datar   s           r&   get_app_tokenzLoginByTokenView.get_app_token   s    lB#-BBB	Ii((	 	=%%''!$99%(]),&:      !!###99;;D^,I++--112KSQQGIiG<<<<r(   c                    |                      |          }t                                                                          t          dz   ||d          }|                                 |                                d         }|d         st          d          |d         |j        j	        k    s|d         st          d          d S )	Nz/debug_token)input_tokenr,   r-   r   rq   ztoken is not validapp_idztoken app_id mismatch)
r   r   r0   r1   r   r4   r5   r   r"   rg   )rD   r8   r   r   r9   r   s         r&   rt   zLoginByTokenView.inspect_token   s    &&x00	MM!!##S.'2INN    	 	yy{{6"J 	9"#7888>X\3334
;K3"#:;;; 43r(   )	rG   rH   rI   r\   r1   r   r   rt   __classcell__)ra   s   @r&   rW   rW   S   sz        
V 
V 
V 
V 
V& & &
7 7 7r  0< < < < < < <r(   rW   )/r   r   loggingr]   datetimer   djangor   django.core.cacher   django.core.exceptionsr   django.utilsr   django.views.genericr	   allauth.socialaccountr
   allauth.socialaccount.adapterr   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   r   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   r   r8   r   r   r   	getLoggerrG   loggerr'   r<   r>   adapter_viewoauth2_loginoauth2_callbackrW   as_viewlogin_by_tokenrU   r(   r&   <module>r      s/                   # # # # # # 3 3 3 3 3 3 ! ! ! ! ! ! % % % % % % . . . . . . 5 5 5 5 5 5        B A A A A A A A          ' & & & & & H H H H H H H H H H 
	8	$	$    (= = = = =M = = =" ,+,ABB1$12GHHr< r< r< r< r<t r< r< r<j "))++r(   