
    )Jf                        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	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mZmZ ddlmZ dZdZ eedi                               di                               dd          Z eedi                               di                               dd          Z  eedi                               di                               dd          Z! eedi                               di                               dd          Z" G d de          Z# ej$        e#          Z% ej$        e#          Z& G d de          Z' ee'(                                          Z)dS )    N)settingsPermissionDenied)csrf_exempt)View)default_backend)load_pem_x509_certificate)get_adapter)complete_social_loginrender_authentication_error)OAuth2Error)OAuth2AdapterOAuth2CallbackViewOAuth2LoginView   )GoogleProviderz*https://www.googleapis.com/oauth2/v1/certsz-https://www.googleapis.com/oauth2/v2/userinfoSOCIALACCOUNT_PROVIDERSgoogle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                   6    e Zd Zej        ZeZeZ	e
ZeZeZd ZdS )GoogleOAuth2Adapterc                    	 t          j        |d         ddddd| j        |j                  }n'# t           j        $ r}t          d          |d }~ww xY w| j        rd|vrt                                                      	                    | j
        dd	                    |          i
          }|j        st          d          |                                d         |d<   |                                                     ||          }	|	S )Nid_tokenFTverify_signature
verify_iss
verify_aud
verify_exp)optionsissueraudiencezInvalid id_tokenpictureAuthorizationz	Bearer {})headerszRequest to user info failed)jwtdecodeid_token_issuer	client_id
PyJWTErrorr   fetch_userinfor
   get_requests_sessiongetidentity_urlformatokjsonget_providersociallogin_from_response)
selfrequestapptokenresponsekwargsidentity_dataeresplogins
             o/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/google/views.pycomplete_loginz"GoogleOAuth2Adapter.complete_login@   s8   	9J$ )."&"&"&	  +  MM" ~ 	9 	9 	9011q8	9  	>9M#A#A%%''%,k.@.@.G.GH     7 A!"?@@@'+yy{{9'=M)$!!##==g}UUs   -0 AAAN)__name__
__module____qualname__r   idprovider_idr   access_token_urlr   authorize_urlr   r*   IDENTITY_URLr0   r   r-   rA        r@   r   r   8   sE         #K'!M%OL#N$ $ $ $ $rK   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          t          j        f$ r!}t          || j        |          cY d }~S d }~ww xY w)N)	exception)r
   adapterr4   r   rE   providersuperdispatchrequestsRequestExceptionr   r(   r,   r   )r6   r7   exc	__class__s      r@   rS   zLoginByTokenView.dispatchl   s    "}}11'>;LMM	V77##G,,,%N
 	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   )r6   r7   s     r@   r/   zLoginByTokenView.getx   s     u%%%rK   c           	      N   |                      |           |j                            d          }|                     |          \  }}t	          j        ||dddddt          | j        j        j	        |g          }| j        
                    ||          }t          ||          S )N
credentialTr   )r"   r#   r$   
algorithms)
check_csrfPOSTr/   get_keyr(   r)   r   rQ   r8   r+   r5   r   )	r6   r7   argsr;   r[   algkeyr<   r?   s	            r@   postzLoginByTokenView.post}   s       \%%l33
<<
++S
$("""	  #]&0u
 
 
 77OO$We444rK   c                     |j                             d          }|st          d          |j                            d          }|st          d          ||k    rt          d          d S )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^   )r6   r7   csrf_token_cookiecsrf_token_bodys       r@   r]   zLoginByTokenView.check_csrf   s~    #O//??  	?"#=>>>!,**>:: 	B"#@AAA//"#KLLL 0/rK   c                    t          j        |          }|d         }|d         }t                                                                          t
                    }|                                 |                                }|                    |          }|st          d          t          |
                    d          t                                                                }||fS )Nkidra   zinvalid 'kid'utf8)r(   get_unverified_headerr
   r.   r/   	CERTS_URLraise_for_statusr3   r   r	   encoder   
public_key)r6   r[   headerrj   ra   r:   jwksrb   s           r@   r_   zLoginByTokenView.get_key   s    *:66UmUm==5577;;IFF!!###}}hhsmm 	4"?333'JJv 1 1
 

*,, 	 CxrK   )	rB   rC   rD   rS   r/   rc   r]   r_   __classcell__)rW   s   @r@   rM   rM   k   s|        
V 
V 
V 
V 
V& & &
5 5 5*M M M      rK   rM   )*rT   django.confr   django.core.exceptionsr   django.views.decorators.csrfr   django.views.genericr   r(   cryptography.hazmat.backendsr   cryptography.x509r	   allauth.socialaccount.adapterr
   allauth.socialaccount.helpersr   r   -allauth.socialaccount.providers.oauth2.clientr   ,allauth.socialaccount.providers.oauth2.viewsr   r   r   rQ   r   rm   rI   getattrr/   r   r   r   r   r   adapter_viewoauth2_loginoauth2_callbackrM   as_viewlogin_by_tokenrJ   rK   r@   <module>r      s                3 3 3 3 3 3 4 4 4 4 4 4 % % % % % % 



 8 8 8 8 8 8 7 7 7 7 7 7 5 5 5 5 5 5        F E E E E E          % $ $ $ $ $ 9	> GH/44S2S	BCC  GH/44S2SHII  GH/44S2S	9::  GH/44S2S	5!! , , , , ,- , , ,^ ,+,?@@1$12EFF? ? ? ? ?t ? ? ?D -557788rK   