
    )JfE                     @   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 d dlmZmZ d dlmZ d dlmZmZ d dl m!Z!m"Z"  G d de#          Z$ G d de#          Z% G d dee%          Z& G d de%          Z'dS )    )	timedelta)RequestException)PermissionDenied)HttpResponseRedirect)reverse)timezone)ImmediateHttpResponse)get_adapter)complete_social_loginrender_authentication_error)SocialLoginSocialToken)ProviderException)
AuthAction	AuthError)OAuthLoginMixin)OAuth2ClientOAuth2Error)build_absolute_uriget_request_paramc                   V    e Zd ZdZeZdZdZdZdZ	dZ
dZdZd Zd	 Zd
 Zd Zd Zd ZdS )OAuth2Adapter
expires_inTNPOSTaccess_denied Fc                     || _         d S N)request)selfr   s     o/home/alex/cs2snipeproduction/venv/lib/python3.11/site-packages/allauth/socialaccount/providers/oauth2/views.py__init__zOAuth2Adapter.__init__(   s        c                 h    t          | j                                      | j        | j                  S )N)provider)r
   r   get_providerprovider_id)r    s    r!   r&   zOAuth2Adapter.get_provider+   s3    4<((55L4#3 6 
 
 	
r#   c                     t           )z0
        Returns a SocialLogin instance
        )NotImplementedError)r    r   appaccess_tokenkwargss        r!   complete_loginzOAuth2Adapter.complete_login0   s
     "!r#   c                 `    t          | j        dz             }| j        }t          |||          S )N	_callback)r   r'   redirect_uri_protocolr   )r    r   r*   callback_urlprotocols        r!   get_callback_urlzOAuth2Adapter.get_callback_url6   s1    t/+=>>-!'<BBBr#   c                    t          |d                   }|                    dd          |_        |                    | j        d           }|r6t	          j                    t          t          |                    z   |_        |S )Nr+   )tokenrefresh_token )seconds)	r   gettoken_secretexpires_in_keyr   nowr   int
expires_at)r    datar5   r   s       r!   parse_tokenzOAuth2Adapter.parse_token;   su    $~"6777!XXor::XXd1488
 	S'|~~	#j//0R0R0RREr#   c                     t          | j        d          }|j                            dd           }|                    ||          S )Ncodepkce_code_verifier)rC   )r   r   sessionpopget_access_token)r    r   r*   clientrB   rC   s         r!   get_access_token_dataz#OAuth2Adapter.get_access_token_dataC   sF     v66$_001EtLL&&t@R&SSSr#   )__name__
__module____qualname__r;   r   client_classsupports_stater0   access_token_methodlogin_cancelled_errorscope_delimiter
basic_authheadersr"   r&   r-   r3   r@   rH    r#   r!   r   r      s        !NLN  +OJG  
 
 

" " "C C C
  T T T T Tr#   r   c                   *    e Zd Zed             Zd ZdS )
OAuth2Viewc                       fd}|S )Nc                                  }| |_         t          t                    s |           |_        n|_        	  |j        | g|R i |S # t
          $ r}|j        cY d }~S d }~ww xY wr   )r   
isinstancer   adapterdispatchr	   response)r   argsr,   r    erY   clss        r!   viewz%OAuth2View.adapter_view.<locals>.viewL   s    355D"DLg}55 '&ww//&"$t}W>t>>>v>>>( " " "z!!!!!!"s   A 
A-A("A-(A-rS   )r^   rY   r_   s   `` r!   adapter_viewzOAuth2View.adapter_viewJ   s)    
	" 
	" 
	" 
	" 
	" 
	" r#   c                 b   | j                             ||          }| j                                         }|                    |          }| j                             | j        |j        |j        | j         j        | j         j	        ||| j         j
        | j         j        | j         j        
  
        }|S )N)rP   rR   rQ   )rY   r3   r&   	get_scoperL   r   	client_idsecretrN   access_token_urlrP   rR   rQ   )r    r   r*   r1   r%   scoperG   s          r!   
get_clientzOAuth2View.get_clientZ   s    |44WcBB<,,..""7++**LMJL,L) L8L(|. + 
 
 r#   N)rI   rJ   rK   classmethodr`   rg   rS   r#   r!   rU   rU   I   s<          [    r#   rU   c                       e Zd Zd ZdS )OAuth2LoginViewc                 ^   | j                                         }|j        }|                     ||          }|j                            dt          j                  }| j         j        }|	                    ||          }	|
                                }
|
                    dd           }|	                    |
           |r
||j        d<   t          j        |          |_        	 t#          |                    ||	                    S # t&          $ r}t)          |||          cY d }~S d }~ww xY w)Nactioncode_verifierrC   	exception)rY   r&   r*   rg   GETr9   r   AUTHENTICATEauthorize_urlget_auth_paramsget_pkce_paramsrE   updaterD   r   stash_statestater   get_redirect_urlr   r   )r    r   r\   r,   r%   r*   rG   rl   auth_urlauth_paramspkce_paramsrm   r]   s                r!   loginzOAuth2LoginView.loginn   s1   <,,..l#..:+BCC<-..w??..00#>>;''' 	B4AGO01".w77	O'(?(?+(V(VWWW 	O 	O 	O.wANNNNNNNNN	Os   #"D 
D,D'!D,'D,N)rI   rJ   rK   r|   rS   r#   r!   rj   rj   m   s(        O O O O Or#   rj   c                       e Zd Zd ZdS )OAuth2CallbackViewc                 V   | j                                         }d|j        v s	d|j        vrY|j                            dd           }|| j         j        k    rt
          j        }nt
          j        }t          |||d| i          S |j	        }| 
                    | j        |          }	 | j                             |||          }	| j                             |	          }
|j        r||
_	        | j                             |||
|	          }|
|_        | j         j        r)t%          j        |t)          |d                    |_        nt%          j        |          |_        t/          ||          S # t0          t2          t4          t6          f$ r}t          |||          cY d }~S d }~ww xY w)NerrorrB   callback_view)r   extra_context)r[   rw   rn   )rY   r&   rp   r9   rO   r   	CANCELLEDUNKNOWNr   r*   rg   r   rH   r@   pkr-   r5   rM   r   verify_and_unstash_stater   rw   unstash_stater   r   r   r   r   )r    r   r\   r,   r%   
auth_errorr   r*   rG   r+   r5   r|   r]   s                r!   rZ   zOAuth2CallbackView.dispatch   s   <,,..gk!!V7;%>%> $77JT\???!+!).#T	    ls33	O<==gsFSSLL,,\::Ev  	L//el 0  E  EK|* A)B.w@@  *7@@(%888	
 	O 	O 	O /wANNNNNNNNN	Os   (CE/ /F(F#F(#F(N)rI   rJ   rK   rZ   rS   r#   r!   r~   r~      s(        +O +O +O +O +Or#   r~   N)(datetimer   requestsr   django.core.exceptionsr   django.httpr   django.urlsr   django.utilsr   allauth.core.exceptionsr	   allauth.socialaccount.adapterr
   allauth.socialaccount.helpersr   r   allauth.socialaccount.modelsr   r   $allauth.socialaccount.providers.baser   .allauth.socialaccount.providers.base.constantsr   r   +allauth.socialaccount.providers.base.mixinsr   -allauth.socialaccount.providers.oauth2.clientr   r   allauth.utilsr   r   objectr   rU   rj   r~   rS   r#   r!   <module>r      s:         % % % % % % 3 3 3 3 3 3 , , , , , ,       ! ! ! ! ! ! 9 9 9 9 9 9 5 5 5 5 5 5        B A A A A A A A B B B B B B        H G G G G G        @ ? ? ? ? ? ? ?)T )T )T )T )TF )T )T )TX! ! ! ! ! ! ! !HO O O O Ooz O O O,,O ,O ,O ,O ,O ,O ,O ,O ,O ,Or#   